2015-03-24 70 views
1

我的代码从一个GridView获取复选框的值不进行身份

<asp:GridView ID="FireFighters" runat="server" AutoGenerateColumns="false" OnRowDataBound="FireFighters_RowDataBound" > 
    <Columns> 
     <asp:BoundField HeaderText="שם הכבאי" DataField="username" /> 
     <asp:CheckBoxField HeaderText="מצוות לאירוע" DataField="IsLinked" /> 
    </Columns> 
</asp:GridView> 

我不能添加和id到ASP:CheckBoxField字段,我试着给它像这样从后台代码:

foreach(GridViewRow gvr in FireFighters.Rows) 
{ 
    lst.Add(new FireFighter{username=gvr.Attributes["id"].ToString(),IsLinked=((gvr.Cells[1] as Control) as CheckBox).Checked}); 
} 

但它的空,我怎么能得到复选框的值(选中或不选)?

+0

为什么你不能添加一个ID到复选框? – nZeus 2015-03-24 22:18:57

+0

在这里你可以看到如何在GridView中查找控件:http://stackoverflow.com/questions/6873973/how-to-find-control-in-templatefield-of-gridview – nZeus 2015-03-24 22:21:06

+0

@nZeus你不能添加一个id以asp:CheckBoxField,我希望我能 – 2015-03-24 22:22:20

回答

1

你几乎在那里。这会帮助你:

foreach (GridViewRow gvr in FireFighters.Rows) 
{ 
    lst.Add(new MyClass { username = ((DataControlFieldCell)gvr.Controls[0]).Text, IsLinked = ((CheckBox)gvr.Controls[1].Controls[0]).Checked }); 
} 

每一行都有细胞的集合,这些细胞有你想要的内部控制。您可以通过索引访问它们(在复选框的情况下)并将其转换为CheckBox或访问单元格本身并获取文本并将其转换为DataControlFieldCell

+0

我不会推荐这个解决方案。使用索引不是一个好主意。 – nZeus 2015-03-24 22:38:29

+0

我知道这并不是最好的主意,因为代码可以改变。他已经这样做了,我只是把他指向正确的方向。随意添加您自己的更好的解决方案。 – 2015-03-24 22:39:47

+0

谢谢! 它工作得很好 – 2015-03-24 22:40:31