Textbox对象无法使用find control创建。
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
问题的原因是在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()事件。
希望这能帮助到你解决问题。