我在gridview中,编辑列,然后将checkfield转换成为了模板列,当按了提交按钮后出现错误。
在后台编写的代码如下:
for (int i = 0; i < gvBallot.Rows.Count; i++)    //gvBallot为gridview
        {
            CheckBox cbxBallot = (CheckBox)gvBallot.Rows[i].FindControl("cbxBallot1");
            if (cbxBallot.Checked) //这地方出错            {
                DataSet ds = (DataSet)ViewState["ballotinfo"];
                string strBallotID = ds.Tables["ballotinfo"].Rows[i]["optionID"].ToString();
                BallotDBUtil.UpdateBallotResult(strBallotID, ViewState["subjectID"].ToString());
            }
        }
出现的错误为:
未将对象引用设置到对象的实例。
哪位高手可以指点出是什么地方出了问题啊,如何解决?谢谢

解决方案 »

  1.   

    CheckBox cbxBallot = (CheckBox)gvBallot.Rows[i].Cells[列索引].FindControl("cbxBallot1");
      

  2.   

    你确定存在ID为cbxBallot1的CheckBox?
      

  3.   

    我用的是gridview中的checkboxfield,然后将它转成模板列的,cbxBallot1为我设定的一个checkbox的变量啊
      

  4.   


     前台:
    <Columns>
    <asp:TemplateField>
    <ItemTemplate>
    <asp:CheckBox ID="CheckBox1" runat="server" />
    </ItemTemplate>
    </asp:TemplateField>
    .....
    .....后台:
     for (int i = 0; i <GridView1.Rows.Count; i++)
    {
    CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
    if (cbox.Checked == true)
    {
     //do something
    }
      

  5.   


    看看Cells[]这儿索引值对不对
      

  6.   

    我确定我的cell[]的值写的是对的,而且我先添加模板列,在模板列中加入checkbox还是没有用,还是出现一样的错误
      

  7.   

    别挣扎了,我用跟你一样的方法,并且checkbox的索引也获取了,但是if (cbxBallot.Checked)结果永远是false,郁闷死了,真不知道微软怎么设计的