【问题标题】:Get Checkbox Object from a Repeater从中继器获取复选框对象
【发布时间】:2017-07-12 14:52:59
【问题描述】:

我有一个中继器,我正在尝试从 LinkBut​​ton 事件访问 Checkbox 控制器。中继器控件仅包含文字和链接按钮,但不包含复选框控件。

<asp:Repeater ID="rptTicketsInPerformance" OnItemDataBound="rptTicketsInPerformance_ItemBound" runat="server">
 <ItemTemplate>
   <asp:CheckBox ID="cbticketSelect" runat="server" />
   <asp:Literal ID="ltticketDescription" runat="server" />
 </ItemTemplate>
 <FooterTemplate>
   <div class="change-buttons">
   <asp:LinkButton ID="btDonate" runat="server" CssClass="button-primary" Text="Donate"  OnClick="donateButton_click" />
   <asp:HyperLink ID="hlCancel" runat="server" CssClass="button-primary close-reveal-modal" Text="Cancel" />
   </div>
 </FooterTemplate>
</asp:Repeater>

代码背后

    protected void donateButton_click(object sender, System.EventArgs e)
    {
        RepeaterItem items = ((sender as LinkButton).Parent as RepeaterItem);
        foreach(var itm in items.Controls)
        {
            if(itm is CheckBox)
            {
              // Do something here
            }
        }
     }

【问题讨论】:

    标签: c# asp.net checkbox


    【解决方案1】:

    您可以循环所有Repeater项并使用FindControl在每个项中定位CheckBox。

    protected void donateButton_Click(object sender, EventArgs e)
    {
        string checkedBoxes = "";
    
        foreach (RepeaterItem item in rptTicketsInPerformance.Items)
        {
            CheckBox cb = item.FindControl("cbticketSelect") as CheckBox;
            checkedBoxes += cb.Checked.ToString() + ", ";
        }
    
        Label1.Text = checkedBoxes;
    }
    

    【讨论】:

      【解决方案2】:

      您应该注意senderParent 实际上是Repeater,而不是Repeater 项。

      所以,你应该指向

      sender.Parent.Items
      

      然后遍历这些,找到CheckBox

      【讨论】:

      【解决方案3】:

      试试这个FindControl:

      protected void donateButton_click(object sender, System.EventArgs e)
      {
          RepeaterItem items = ((sender as LinkButton).Parent as RepeaterItem);
          foreach (RepeaterItem itm in items.Controls)
          {
              CheckBox chk = (CheckBox)itm.FindControl("cbticketSelect");
      
              if (chk.Checked)
              {
                  Lable1.Text = "Do something ";
                  // Do something here
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-01
        • 1970-01-01
        相关资源
        最近更新 更多