未将对象引用设置到对象的实例
gridview 中获取checkbox 的值获取不到,报错:未将对象引用设置到对象的实例这是前台用gridview 获取checkbox 的值,选中之后点击删除可以批量删除
<asp:TemplateField>
<HeaderTemplate>
<input ID="Checkbox1" type="checkbox" onclick="CheckAll(this)" />全选
</HeaderTemplate>
<ItemTemplate><input ID="Checkbox3" type="checkbox" runat="server"/></ItemTemplate>
</asp:TemplateField>
这是删除按钮:<asp:Button ID="Button1" runat="server" Text="删除"
onclick="Button1_Click1"/>
这是按钮的事件:
protected void Button1_Click1(object sender, EventArgs e)
{
for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
int Id = Convert.ToInt32((this.GridView1.Rows[i].Cells[0].FindControl("Checkbox3") as CheckBox).Checked);
if (UserManager.DeleteUserById(Id) > 0)
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "<script>alert('删除成功')</script>");
this.BindData();
}
}
}
请教各位!! --------------------编程问答-------------------- int Id = Convert.ToInt32(((HtmlInputCheckBox)GridView1.Rows[i].Cells[0].FindControl("Checkbox3")).Checked); --------------------编程问答-------------------- 还有个问题 你怎么把BOOL型的转换成 INT32? --------------------编程问答-------------------- int Id = Convert.ToInt32((this.GridView1.Rows[i].Cells[0].FindControl("Checkbox3") as CheckBox).Checked);
红色部分。。。先要确定它得到了。。。然后才对它进行操作 --------------------编程问答--------------------
int i = 这里放你的bool变量 ? 0 : 1; --------------------编程问答--------------------
...
我只是问LZ
而且LZ貌似是想获取绑定的ID值 --------------------编程问答-------------------- 本来页面里放的是HtmlInputCheckBox,而你代码中用的是CheckBox
转换后肯定为Null,然后你又int.parse(null).
显然会出异常。 --------------------编程问答-------------------- 就LZ的标题,问题是类型转换错误,1楼正解
完了,又会出现2楼说的问题,4楼正解 --------------------编程问答-------------------- 1、cells[0] 删除试试
2、还有一种情况可能是<ItemTemplate>和<input>之间可能有空格。如果有空格的话,第一个搜索到的cells里面就是空格所以获取不到值。
希望能解决你的问题 --------------------编程问答-------------------- 走断点调试
看看是个哪一行出的错
或者 把 你取的值看看 能不能用 窗口弹出来 --------------------编程问答-------------------- 可以先判断下:
int col1 = e.Row.Cells[0].Text != "" && e.Row.Cells[0].Text != " " ? Convert.ToInt32(e.Row.Cells[0].Text) : 0;
if(col1!=0)
{
/....
} --------------------编程问答-------------------- int Id = Convert.ToInt32(this.GridView1.Rows[i].Cells[0].FindControl("Checkbox3") as CheckBox);
Checked是干嘛的
要判断先取出控件在判断
CheckBox cb=this.GridView1.Rows[i].Cells[0].FindControl("Checkbox3") as CheckBox;
for....
补充:.NET技术 , ASP.NET