<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Horizontal" OnRowDataBound="GridView1_RowDataBound" >
            <Columns>
                <asp:TemplateField HeaderText="name">
                    <ItemTemplate>
                        <%# DataBinder.Eval(Container.DataItem,"name") %>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:CheckBox ID="CheckBox2" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                                
            </Columns>
        </asp:GridView>    以下为OnRowDataBound的方法
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        CheckBox CB_CheckBox = (CheckBox)e.Row.FindControl("CheckBox2");
        CB_CheckBox.Checked = true;
    }
执行时报错CB_CheckBox 为空

解决方案 »

  1.   

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowIndex > -1)
        {  
            CheckBox CB_CheckBox = (CheckBox)e.Row.FindControl("CheckBox2");
            CB_CheckBox.Checked = true;
        }
    }
      

  2.   

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
                foreach (GridViewRow Rows in GridView1.Rows)
                {
                     CheckBox CB_CheckBox = (CheckBox)Rows.FindControl("CheckBox2");
                     CB_CheckBox.Checked = true;
                }
    }
      

  3.   

    楼上Androclus(Androclus)是错的...
      

  4.   

    楼上的楼上也是不对的.
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
    ........
    }