0

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

<%= Control.ID.ClientID %>

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

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

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

4

3 回答 3

2

HiddenField控制元素被呈现为inputs 类型hidden,因此,尽管没有彻底理解您对有限应用程序的模糊场景,您可以使用 jQuery 中的选择器访问它们,如下所示:

$("input[type=hidden]")

根据您的情况,您可能希望进一步限制该选择器。

但是,这重点是包含标记,尽管您的示例似乎想要使用内联 ASP.NET 脚本来使用托管代码。请阐明您的意图和最终目标。

于 2013-02-13T08:59:07.883 回答
0

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

我在中继器内的 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
                              };

如果此实现有缺陷或以某种方式不好,请发表评论。

于 2013-02-13T10:07:50.427 回答
0

您可以使用类选择器
将类放在隐藏字段上。
并找到适当的隐藏字段并设置它的值的on change事件。multiselectable

编辑-1

我会建议你ddlmultiselectable dropdown.
在此多选的更改方法上绑定 jquery。
使用 jqueryparentprev选择器,您可以设置隐藏字段中的值。

示例

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

这只是我的方法的想法。

编辑 2

这是一个很好的例子,说明如何css-class在隐藏字段上使用。
jQuery隐藏字段

于 2013-02-13T09:02:28.643 回答