【问题标题】:Getting checkbox value from a gridview without id从没有id的gridview获取复选框值
【发布时间】:2015-05-28 10:16:36
【问题描述】:

我的代码

<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>

我无法向 asp:CheckBoxField 添加和 id,我尝试从代码隐藏中这样调用它:

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

但是它为空,我怎样才能得到复选框的值(选中与否)?

【问题讨论】:

  • 为什么不能在复选框中添加 ID?
  • 这里你可以看到如何在 GridView 中找到控件:stackoverflow.com/questions/6873973/…
  • @nZeus 你不能向 asp:CheckBoxField 添加 id,我希望我可以
  • 你实现了这个foreach什么事件?
  • 您可以使用&lt;asp:TemplateField&gt;并将Checkbox控件放在里面

标签: c# asp.net gridview


【解决方案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

【讨论】:

  • 我不会推荐这个解决方案。使用索引不是一个好主意。
  • 我知道这不是最好的主意,因为代码可以更改。他已经这样做了,我只是为他指出了正确的方向。随意添加您自己的 - 更好的 - 解决方案。
  • @TomerOszlak 正如 nZeus 提到的那样,您必须记住,如果您的标记中的某些内容发生更改,这将不起作用,因此这不是解决您问题的最佳方法。您可能应该使用可以在网格内找到控件的东西。
猜你喜欢
  • 2020-03-08
  • 1970-01-01
  • 2013-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
相关资源
最近更新 更多