在Repeater内部的JQuery中获取HiddenField

本文关键字:获取 HiddenField JQuery Repeater 内部 | 更新日期: 2023-09-27 17:59:10

我有一个Repeater控件,我需要访问里面的HiddenField。我不能使用:

<%= Control.ID.ClientID %>

我也不能使用class或cssclass属性?

所以我的问题很简单,我如何访问中继器内的HiddenField控件?

我的场景是填充一个可多选的下拉列表,我需要在更新函数中知道我选择了哪些元素,为此我使用HiddenField来存储Id。然后在代码后面,我可以访问HiddenField值并进行propor数据绑定。

在Repeater内部的JQuery中获取HiddenField

HiddenField控制元素被呈现为hidden类型的input,因此,尽管您对应用程序有限的模糊场景没有完全理解,但您可以在jQuery中使用这样的选择器来访问它们:

$("input[type=hidden]")

根据您的情况,您可能需要进一步约束该选择器。

然而,这主要集中在包含jquery标记上,尽管您的示例似乎希望使用内联ASP.NET脚本来使用托管代码。请澄清你的意图和最终目标。

您可以使用类选择器
在隐藏字段上放置一个类
并且multiselectableon change事件找到合适的隐藏字段并设置其值

第1版

我建议你把ddl放在multiselectable dropdown之上。
在此多选上绑定jquery on change方法。
使用jquery parentprev选择器可以设置隐藏字段中的值。

Exmaple

     $(".ddl").change( function(){
        $(this).parent().next().find("input:hidden").val($(".ddl").val());
    });

这只是我的方法。

编辑2

下面是一个如何在隐藏字段上使用css-class的好例子。
Jquery隐藏字段

我找到了一个解决方案,实际上很简单:)

我在中继器内部的HiddenField上使用了ClientIDMode属性:

<asp:HiddenField ID="HiddenField_Pladser" runat="server" Value="Selected" ClientIDMode="Static" />

ClientID值设置为ID属性的值。然后在JQuery脚本中很容易访问值:

$("#HiddenField_Pladser").val();

从后面的代码中,我知道中继器的ItemIndex,这使得使用以下代码创建数据集合变得很容易:

var data = from RepeaterItem item in rpPladser.Items
                   let hidden = ((HiddenField)item.FindControl("HiddenField_Pladser"))
                   select new
                              {
                                  selected = hidden.Value
                              };

如果这个实现有缺陷或不好,请发表评论。