gridview显示的每一行前都有一个”checkbox“方框,可以选择其中一行,记得是单选,现在怎么获得选中的行的主键值

解决方案 »

  1.   


    for(int i=0;i<GridView1.Rows.Count;i++)
    {
        int id = 0;
        CheckBox cb = GridView1.Rows[i].Cells[0].FindControl("CheckBox1") as CheckBox;
        if(cb.Checked)
            id = Convert.ToInt32(GridView1.DataKeys[i].Value);
    }
      

  2.   

    提示if(cb.Checked)错误“未将对象引用设置到对象的实例”??????
      

  3.   

    你这一列是模板列还是CheckBoxField?
      

  4.   

                 <Columns>
                <asp:TemplateField>
                        <ItemTemplate>
                             <input id="chkSelect" name="chkSelect" runat="server" type="checkbox"       value="bookid" onclick="Check(this)" />
                        </ItemTemplate>
                 </asp:TemplateField> 
                    <asp:BoundField DataField="bookid" HeaderText="书号" SortExpression="书号" />
                    <asp:BoundField DataField="bookname" HeaderText="书名" SortExpression="书名"/>
                    <asp:BoundField DataField="author" HeaderText="作者" SortExpression="作者"/>
                    <asp:BoundField DataField="publisher" HeaderText="出版社" SortExpression="出版社" />
                    <asp:BoundField DataField="price" HeaderText="价格" SortExpression="价格" />                 
                </Columns>  你看应该是模板列吧?我不太懂
      

  5.   

    CheckBox cb = GridView1.Rows[i].Cells[0].FindControl("chkSelect") as CheckBox;
      

  6.   

    如果要做只能单选的限制呢?Thanks
      

  7.   

    只单选的话,可通过js就可以控制,当选择一个后将页面上其他的disable掉就行