2015-03-24 78 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