我想通过GridView1_RowEditing1事件从gridview选择行传递一个会话值。我能够获得primarykey(p.key)的会话值,但Associate_ID返回空值。gridview findcontrol什么都不返回空字符串(空白)
C#代码背后
protected void GridView1_RowEditing1(object sender, GridViewEditEventArgs e)
{
int primarykey = Convert.ToInt32(GridView1.DataKeys[e.NewEditIndex].Value);
string name = Convert.ToString(GridView1.Rows[e.NewEditIndex].FindControl("Associate_ID"));
Session["Number"] = primarykey;
Session["Name"] = name;
//redirect
Response.Redirect("updatee.aspx");
}
.ASPX
<asp:TemplateField HeaderText="Associate_ID" SortExpression="Associate_ID">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Associate_ID") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Associate_ID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
OUTPUT:
关键:5
名称:
正如你可以看到我没有得到所选字段的Associate_ID。 使用
string name = Convert.ToString(GridView1.Rows[3].Cells[3].FindControl("Associate_ID"));
也试过,但没有结果,网格具有多行多列(8 * 15)
试过gridview findcontrol returning empty ""建议,并试图阻止再结合上回发的GridView控件。从GridView控件
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" OnRowEditing="GridView1_RowEditing1" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
背后
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//DataSourceID = "SqlDataSource1"
GridView1.DataSource = SqlDataSource1;
GridView1.DataBind();
}
}
没有这个代码 删除DataSourceID的帮助。我仍然为Associate_ID获得空白值。 我无法看到问题出在哪里。请帮忙!
你所说的我试图改变文本框的ID,但它不是给人一种空白“” – rakesh
也尝试重命名文本框,仍然一样:( – rakesh
确认它确实使用下面的方式返回NULL。的FindControl(“TextBox1的”);'' 串疑问句= name.Text;)' - 这扔一个NullReferenceException错误 – rakesh