【问题标题】:How might I control a checkbox in a repeater?如何控制中继器中的复选框?
【发布时间】:2009-10-02 03:08:51
【问题描述】:

在我的项目中,有一个Repeater。在中继器中是CheckBox。当我将数据绑定到Repeater 时,如何控制(设置选中/取消选中)由Repeater 生成的CheckBoxs?

这是我尝试过的:

<asp:Repeater ID="Security1" runat="server">

  <ItemTemplate>

    <tr>
      <td> <asp:CheckBox ID="CheckBox1" runat="server"> </td>

      <td><%#DataBinder.Eval(Container.DataItem,"Featurename") %></td>
    </tr>

  </ItemTemplate>

</asp:Repeater>

【问题讨论】:

  • 指出您谈论的语言(至少在标签中)可能很有用...

标签: asp.net data-binding checkbox repeater


【解决方案1】:

我假设 'Featurename' 是一个位/布尔值,所以如果你想控制 'checked' 状态,你可以将它绑定到复选框控件的 'Checked' 属性:

这样的……

<asp:checkbox id="check1" runat="server" Checked='<%#DataBinder.Eval(Container.DataItem,"Featurename") %>'/>

【讨论】:

    【解决方案2】:

    你可以试试这样的;

    < asp:repeater id="repeater" runat="server">
      < li>< asp:checkbox id="chkbx" runat="server />
      < %#Eval("attribute_name_here")%>< /li>
    < /asp:repeater>
    

    代码隐藏,为复选框添加属性;

    protected void repeater_ItemDataBound(...)
    {
      if (e.Item.ItemType == ListItemType.Item ||
          e.Item.ItemType == ListItemType.AlternatingItem)
        {
          ((CheckBox)e.Item.FindControl("chkbx")).Attributes
           .Add("project_id",
            ((DataRowView)e.Item.DataItem)["project_id"].ToString());
        }
    }
    

    然后当你想检查它们时;当然,你也可以检查属性

    foreach (RepeaterItem item in repeater.Items)
    {
      CheckBox chkbx = item.FindControl("chkbx") as CheckBox;
      if (chkbx.Checked)
      {
        Response.Write("Checked Project: " + 
          chkbx.Attributes["project_id"].ToString() + "< br />");
      }
    }
    

    【讨论】:

    • 我很高兴它做到了 :) Kolay Gelsin。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多