如何从Repeater中的控件获取数据

发布于 2024-11-28 04:34:38 字数 941 浏览 4 评论 0原文

我有带有项目模板的中继器:

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

在 jQuery 中,我更改了 textBox 和 chekBox 的显示属性。我如何从这些控件中获取数据?

我无法使用 FindControls() 函数,因为我不知道控件的 ID。

I have repeater with item template:

<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 I change display property of textBox and chekBox. How can I get data from those controls?

I can't use FindControls() function, because I don't know id of my controls.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心安伴我暖 2024-12-05 04:34:38

您可以使用 ID 和 findcontrol 来获取值。这是一个工作示例:

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

You can use ID's and findcontrol to get the values. Here is a working example:

<%@ 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>
别再吹冷风 2024-12-05 04:34:38

您可以向控件添加一个类吗?
如果是这样,你可以尝试使用 $(".givenClass").

Can you add a class to your controls?
If so you could try with $(".givenClass").

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文