3 Stimmen

Wie man Daten von Steuerelementen im Repeater erhält

Ich habe einen Repeater mit einer Artikelvorlage:

<asp:Repeater ID="queryParametersRepeater" runat="server" 
  DataSourceID="queryParametersObjectDataSource">
  <ItemTemplate>
    <tr class="itemTemplate">
      <td class="labelTd" style="width: 300px;">
        <asp:HiddenField runat="server" Value='<%# Eval("ParameterType") %>' />
        Define <%# Eval("ParameterName") %> (type <%# Eval("ParameterType") %>)
      </td>                        
      <td class="valueTd">                            
        <asp:TextBox runat="server" Width="300px" Text='<%# Eval("ParameterName") %>' />
        <asp:CheckBox runat="server" Width="300px" />
      </td>
    </tr>
  </ItemTemplate>                
</asp:Repeater>

In jQuery ändere ich die Display-Eigenschaft von textBox und chekBox. Wie kann ich Daten von diesen Steuerelementen erhalten?

Ich kann nicht verwenden FindControls() Funktion, weil ich die ID meiner Kontrollen nicht kenne.

13voto

Chris Mullins Punkte 6427

Sie können ID's und findcontrol verwenden, um die Werte zu erhalten. Hier ist ein funktionierendes Beispiel:

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Collections.Generic" %>

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //bind the data source
            RepeaterExample.DataSource = new List<KeyValuePair<int, string>>{
                new KeyValuePair<int,  string>(1, "Test1"), 
                new KeyValuePair<int,  string>(2, "Test2"), 
                new KeyValuePair<int,  string>(3, "Test3")
            };
            RepeaterExample.DataBind();
        }

    }

    protected void cmdSubmit_Click(object sender, EventArgs e)
    {
            //read the values and output them
            litResults.Text = "";
            foreach (RepeaterItem i in RepeaterExample.Items)
            {

                TextBox txtExample = (TextBox)i.FindControl("txtExample");
                if (txtExample != null)
                {
                    litResults.Text += txtExample.Text + "<br />";
                }
            }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:Repeater ID="RepeaterExample" runat="server">
                    <HeaderTemplate>
                        test</HeaderTemplate>
                    <ItemTemplate>
                        <asp:TextBox ID="txtExample" runat="server" Text='<%#Eval("Value") %>'></asp:TextBox>
                    </ItemTemplate>
                </asp:Repeater><br />
                <asp:Button ID="cmdSubmit" runat="server" Text="Submit" OnClick="cmdSubmit_Click" />
                <br />
                <asp:Literal ID="litResults" runat="server"></asp:Literal>
            </div>
        </form>
    </body>
</html>

-2voto

ema Punkte 5377

Können Sie eine Klasse zu Ihren Kontrollen hinzufügen? Wenn ja, könnten Sie es mit $(".givenClass").

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X