我想在ASP.NET中读取我的项目的整个gridview的值。 我一直在尝试和搜索很长一段时间,并没有找到我正在寻找的东西。
这是我在aspx页面中的gridview:
<asp:GridView ID="GridViewNatuur" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Naam" HeaderText="Mana" />
<asp:TemplateField HeaderText="Aantal">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" TextMode="Number" AutoPostBack="False" MaxLength="100" Text="0"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
页面加载时获取6行的值。对于每个行,将创建一个文本框。但是,所有这些文本框都具有相同的ID,这很糟糕。我怎么能阻止这个?或者,我怎样才能读取每一行的文本框值?
BLNatuur blnatuur = new BLNatuur();
List<Natuur> naturen = blnatuur.GetNaturen();
BLManaCost blmanacost = new BLManaCost();
int i = 0;
int aantal;
foreach (GridViewRow gridRow in GridViewNatuur.Rows)
{
ManaCost manaCost = new ManaCost();
manaCost.KaartId = kaartInsertId;
manaCost.TypeId = naturen[i].ID;
string opgehaaldAantal = ((TextBox)GridViewNatuur.Rows[gridRow.RowIndex].Cells[1].FindControl("TextBox1")).Text;
bool correct = Int32.TryParse(opgehaaldAantal, out aantal);
if (!correct)
{
aantal = 0;
}
manaCost.Aantal = aantal;
i++;
blmanacost.InsertManaCost(manaCost);
}
在我粘贴的代码中,变量我想要获取字符串opgehaaldAantal的一部分。
请注意,我目前还没有使用ASP.NET。
答案 0 :(得分:1)
从
改变 string opgehaaldAantal = ((TextBox)GridViewNatuur.Rows[gridRow.RowIndex].Cells[1].FindControl("TextBox1")).Text;
到
string opgehaaldAantal = ((TextBox)gridRow .FindControl("TextBox1")).Text;
答案 1 :(得分:0)
要获取所有文本框的值,请创建一个OnRowDataBound事件,该事件在创建时读取每个TextBox,并将Text值添加到List或类似集合中。
答案 2 :(得分:0)
我解决了这个问题。 首先,我遇到了一个问题,当数字文本框仍然是数字时,我无法读取数字文本框的值。所以我将它转换为后端的SingleLine文本框。
我还发现TextBox控件位于单元格控件数组的第二个位置。 (第一个是细胞本身)。所以我必须读取该数组点以获取TextBox。
BLNatuur blnatuur = new BLNatuur();
List<Natuur> naturen = blnatuur.GetNaturen();
BLManaCost blmanacost = new BLManaCost();
int i = 0;
int aantal;
foreach (GridViewRow gridRow in GridViewNatuur.Rows)
{
ManaCost manaCost = new ManaCost();
manaCost.KaartId = kaartInsertId;
manaCost.TypeId = naturen[i].ID;
TextBox textbox = (TextBox)gridRow.Cells[1].Controls[1];
textbox.TextMode = TextBoxMode.SingleLine;
String opgehaaldAantal = textbox.Text;
bool correct = Int32.TryParse(opgehaaldAantal, out aantal);
if (!correct)
{
aantal = 0;
}
manaCost.Aantal = aantal;
i++;
blmanacost.InsertManaCost(manaCost);
}
我要感谢那些调查过它并帮助我找出问题的人。