как найти флажок, в котором установлен флажок в повторителе в asp.net ?

#c# #asp.net #checkbox #repeater

#c# #asp.net #флажок #повторитель

Вопрос:

я хочу, чтобы при нажатии btndelete каждый флажок, в котором установлен флажок в repeater1, получал значение столбца (titr) в той же строке, но я не нахожу, какой флажок установлен, и не получаю доступ к значению столбца (titr)

   <asp:Repeater ID="Repeater1" runat="server">
            <HeaderTemplate>
                <table>
                    <tr>
                        <td>amp;nbsp;</td>
                        <td>subject</td>

                    </tr>
                    </HeaderTemplate>
            <ItemTemplate>
                          <tr>
                              <td>
                                  <asp:CheckBox ID="CheckBox1" runat="server" />
                              </td>
                              <td id="checkvalue" >
                                  <%# Eval("titr") %>
                              </td>


                          </tr>

            </ItemTemplate>
            <FooterTemplate></table></FooterTemplate>
        </asp:Repeater>

 <asp:Button ID="btndelete" runat="server" Text="delete" OnClick="btndelete_Click" />
  

.cs-код является :

 protected void btndelete_Click(object sender, EventArgs e)
        {


        }
  

Комментарии:

1. Я не уверен, почему это было отклонено. Несмотря на грамматику / язык, это вполне разумный вопрос.

2. это мой плохой шанс

Ответ №1:

Вы могли бы получить список repeaterItems для каждой строки, в которой установлен флажок, используя linq, такой, что:

     List<RepeaterItem> selectedItems = Repeater1.Items.Cast<RepeaterItem>().Where(x => ((CheckBox)x.FindControl("CheckBox1"))
.Checked).ToList();
  

Затем вы могли бы выполнить итерацию по списку и получить значение titr для каждой из выбранных строк, но вам пришлось бы установить некоторый серверный элемент управления, равный «titr», когда вы привязываете элемент управления, например:

 <asp:literal id="literal1" runat="server"><%# Eval("titr") %></asp:literal>
  

Таким образом, вы могли бы найти значение позже, когда будете перебирать список, вот так:

 List<string> titrValues = selectedItems.Select(t => ((Literal)t.FindControl("literal1).Text));
  

Возможно, вам придется выполнить некоторые настройки, но это должно дать вам значения titr для каждой строки с выбранным значением.

Ответ №2:

Aspx-код:

 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Repeater ID="Repeater1" runat="server" >
            <ItemTemplate>
                <div>
                    <asp:CheckBox ID="CategoryID" runat="server" Text='<%# Eval("val") %>' />
                </div>
            </ItemTemplate>
        </asp:Repeater>
        <asp:Button Text="Click" OnClick="Button2_Click" runat="server" />
    </form>
</body>
</html>
  

CS Code:

 protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
              DataTable dt = new DataTable();
              dt.Columns.Add("val", typeof(string));

            for (int i = 0; i < 10; i  )
              dt.Rows.Add("testing"   i.ToString());

       Repeater1.DataSource = dt;
       Repeater1.DataBind();
           }
        }     

    protected void Button2_Click(object sender, EventArgs e)
            {
                string Rpt = "Repeater Items Checked:<br />";
                for (int i = 0; i < Repeater1.Items.Count; i  )
                {
                    CheckBox chk = (CheckBox)Repeater1.Items[i].FindControl("CategoryID");
                    if (chk.Checked)
                    {
                        Rpt  = (chk.Text   "<br />");
                    }
                }
                Response.Write(Rpt);
            }
  

Вы также можете использовать точку останова для проверки полученных значений….

Обновлено:http://www.codeproject.com/Questions/534719/GetplusSelectedplusCheckboxesplusinplusASPplusRepe