Как я могу контролировать флажок в повторителе? - PullRequest
0 голосов
/ 01 октября 2009

В моем проекте есть Repeater. А в повторителе есть CheckBox. Когда я связываю данные с Repeater, как я могу контролировать (установить отмечен / не отмечен) CheckBox s, которые создаются Repeater?

Вот что я пробовал:

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

Ответы [ 2 ]

1 голос
/ 01 октября 2009

Я предполагаю, что 'Featurename' является значением бит / bool, поэтому, если вы хотите управлять состоянием 'checked', вы должны связать его со свойством 'Checked' элемента управления checkbox:

Как то так ...

<asp:checkbox id="check1" runat="server" Checked='<%#DataBinder.Eval(Container.DataItem,"Featurename") %>'/>
0 голосов
/ 01 октября 2009

Вы можете попробовать что-то вроде этого;

< 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 />");
  }
}
...