当前位置:编程学习 > C#/ASP.NET >>

未将对象引用设置到对象的实例

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);

红色部分。。。先要确定它得到了。。。然后才对它进行操作 --------------------编程问答--------------------
引用 2 楼 ll108955303 的回复:
还有个问题 你怎么把BOOL型的转换成 INT32?


int i = 这里放你的bool变量 ? 0 : 1; --------------------编程问答--------------------
引用 4 楼 porschev 的回复:
引用 2 楼 ll108955303 的回复:

还有个问题 你怎么把BOOL型的转换成 INT32?


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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,