在Repeater中的JQuery中获取隐藏字段

时间:2013-02-13 08:55:16

标签: c# jquery asp.net

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

<%= Control.ID.ClientID %>

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

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

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

3 个答案:

答案 0 :(得分:2)

HiddenField控制元素呈现给input类型的hidden,因此,虽然没有完全理解您的应用有限的模糊场景,但您可以使用类似的选择器在jQuery中访问它们这样:

$("input[type=hidden]")

根据您的情况,您可能希望更多地约束该选择器。

但是,这主要关注您是否包含标记,尽管您的示例似乎希望使用内联ASP.NET脚本来使用托管代码。请澄清您的意图和最终目标。

答案 1 :(得分:0)

您可以使用班级选择器
在隐藏的领域上课 on change的{​​{1}}事件会找到相应的隐藏字段并设置其值。

编辑-1

我建议你在multiselectable上写一个课程ddl
在这个多选中绑定关于更改方法的jquery。
使用jquery multiselectable dropdownparent选择器,您可以在隐藏字段中设置值。

〔实施例

prev

这只是为了我的方法而已。

编辑2

以下是如何在隐藏字段上使用 $(".ddl").change( function(){ $(this).parent().next().find("input:hidden").val($(".ddl").val()); }); 的一个很好的示例。
Jquery Hidden Field

答案 2 :(得分: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
                              };

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