我有一个Repeater 控件,我需要访问其中的一个HiddenField。我不能使用:
<%= Control.ID.ClientID %>
而且我也不能使用 class 或 cssclass 属性?
所以我的问题很简单,如何访问中继器中的 HiddenField 控件?
我的场景是我填充了一个多选下拉列表,并且我需要在更新函数中知道我选择了哪些元素,为此我使用 HiddenField 来存储 Id。然后在后面的代码中,我可以访问 HiddenField 值并进行适当的数据绑定。
HiddenField控制元素被呈现为inputs 类型hidden,因此,尽管没有彻底理解您对有限应用程序的模糊场景,您可以使用 jQuery 中的选择器访问它们,如下所示:
$("input[type=hidden]")
根据您的情况,您可能希望进一步限制该选择器。
但是,这重点是包含jquery标记,尽管您的示例似乎想要使用内联 ASP.NET 脚本来使用托管代码。请阐明您的意图和最终目标。
我找到了一个实际上很简单的解决方案:)
我在中继器内的 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
};
如果此实现有缺陷或以某种方式不好,请发表评论。
您可以使用类选择器
将类放在隐藏字段上。
并找到适当的隐藏字段并设置它的值的on change事件。multiselectable
我会建议你ddl在multiselectable dropdown.
在此多选的更改方法上绑定 jquery。
使用 jqueryparent和prev选择器,您可以设置隐藏字段中的值。
示例
$(".ddl").change( function(){
$(this).parent().next().find("input:hidden").val($(".ddl").val());
});
这只是我的方法的想法。
这是一个很好的例子,说明如何css-class在隐藏字段上使用。
jQuery隐藏字段