如果套用datagridview中的checkboxfield,生成的数据,会出现无法选择datagridview中数据项的问题,即checkbox不可以被鼠标点击,选中/取消选中。此checkbox的选中与否,完全取决于数据库,表中的bool值得类型,当值为true的时候,生成的datagridview中的checkbox是处于勾选状态的,要想取消勾选,需要通过sql语句,,来修改后台数据库表中的对应字段的值(把true改成false)。这种方法比较烦。
另一种比较好的做法是在datagridview中增加一个templatefield,然后再在下面添加itemtemplate,在该itemtemplate中,增加checkbox控件。
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" EnableModelValidation="True" style="width: 13px" > <Columns> <asp:TemplateField> <ItemTemplate> <asp:CheckBox id="chk" runat="server"/> </ItemTemplate> <ItemStyle HorizontalAlign="Center" /> </asp:TemplateField> <asp:BoundField DataField="USERID" HeaderText="代理设定" > <ItemStyle HorizontalAlign="Center" /> </asp:BoundField> </Columns> </asp:GridView>
这样生成的checkbox控件就可以被选中了。选中的checkbox控件,如何取值?
可以循环遍历datagridview中的rows,然后将值checkbox为true的值取出即可。
bool result = false; List<string> name=new List<string> (); for (int i = 0; i < GridView2.Rows.Count;i++ ) { result = ((CheckBox)GridView2.Rows[i].FindControl("chk")).Checked; if (result) name.Add(GridView2.Rows[i].Cells[1].Text.Trim()); }
datagridview中使用checkbox问题。