Textbox对象无法使用find control创建。

10 浏览
0 Comments

Textbox对象无法使用find control创建。

我的代码中有一个gridview1。在点击编辑按钮时出现错误“对象引用未设置为对象的实例”。我的所有列都是模板字段,id是数据键。我也能够从数据库中获取数据。这里出了什么问题?\n代码如下:\n在我的aspx页面中,我有一个gridview1。在点击编辑按钮时出现错误“对象引用未设置为对象的实例”。我的所有列都是模板字段,id是数据键。我也能够从数据库中获取数据。这里出了什么问题?\nprotected void Edit_Button_Click(object sender, EventArgs e)\n{\n GridViewRow gr = (GridViewRow)((Button)sender).NamingContainer;\n int id = Convert.ToInt32(GridView1.DataKeys[gr.RowIndex].Value);\n cmd = new SqlCommand(\"select * from students where id = \'\"+id+\"\'\",con);\n SqlDataAdapter da = new SqlDataAdapter(cmd);\n DataTable dt = new DataTable();\n da.Fill(dt);\n TextBox name = (TextBox)GridView1.Rows[gr.RowIndex].FindControl(\"name_TextBox\");\n name.Text = \"bhavin\";\n}\n这是我的aspx页面:\n\n \n \'>\n \n \n \'>\n \n\n...\n\n \n \n \n \n \n \n \n \n

0
0 Comments

问题的原因是在Gridview_RowEditing事件中无法访问控件。控件会在此事件之后呈现。如果要在此事件中使用控件,可以使用gridView_rowDataBound()事件。

解决方法是在YourGridView_PageIndexChanging事件中进行绑定,并告诉GridView将要编辑的行。然后,将数据绑定到GridView(就像在加载时绑定数据一样)。

以下是示例代码:

protected void YourGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
   // 告诉GridView将要编辑的行:
   YourGridView.PageIndex = e.NewPageIndex;
   // 然后将数据绑定到GridView(就像在加载时绑定数据一样)
   YourGridView.DataSource = YourDataSetOrDataTable;
   YourGridView.DataBind();
}

如果要访问控件,可以使用gridView_rowDataBound()事件。

希望这能帮助到你解决问题。

0