我有一个绑定到ObjectDataSource的GridView。我为网格中的每一行添加了一个文本框和一个按钮,以允许用户输入日期并单击按钮进行订阅。 GridView中此文本框中不存在任何字段,并在运行此页面时返回null引用。 我该怎么办?请帮忙.. 这是ASPX文件和背后的代码:
<asp:TemplateField HeaderText="content" ItemStyle-Width="150">
<ItemTemplate>
<asp:TextBox ID="Name" runat="server" />
</ItemTemplate>
<ItemStyle Width="150px"></ItemStyle>
</asp:TemplateField>
<asp:ButtonField CommandName="Select" Text="save" ButtonType="Button" />
代码隐藏:
protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
GridViewRow row = GridView1.Rows[e.NewSelectedIndex];
string s = row.Cells[0].Text;
//Fetch value of Name.
TextBox tb = (TextBox)GridView1.FindControl("Name");
string name = tb.Text;
}
name的值为null ...
答案 0 :(得分:0)
GridViewRow
也有FindControl
方法。你可以试试,
protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
GridViewRow row = GridView1.Rows[e.NewSelectedIndex];
TextBox tb = row.FindControl("Name") as TextBox;
String name = tb.Text;
}
答案 1 :(得分:0)
你可以在行命令事件中也这样做。尝试这个..
添加OnRowCommand="gvProducts_RowCommand"
然后在代码背后
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName.Equals("Select"))
{
GridViewRow row = GridView1.Rows[e.RowIndex];
TextBox tb = (TextBox)row.FindControl("Name");
string name = tb.Text;
}
}