【问题标题】:Get HiddenField in JQuery inside Repeater在Repeater内的JQuery中获取HiddenField
【发布时间】:2013-01-28 18:31:38
【问题描述】:

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

<%= Control.ID.ClientID %>

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

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

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

【问题讨论】:

  • 能否提供生成的html
  • 我找到了解决问题的方法,请参阅我自己的答案

标签: c# jquery asp.net


【解决方案1】:

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

$("input[type=hidden]")

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

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

【讨论】:

  • 我确实可以使用上面的来找到控件。但我找到了另一个解决方案。我使用了属性 'ClientIDMode="Static',然后我可以在 JQuery 中使用 ID 作为标识符。请参阅我自己的 answar 以了解实现
【解决方案2】:

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

编辑-1

我会建议你在multiselectable dropdown 上添加一个ddl 类。
在此多选的更改方法上绑定 jquery。
使用 jquery parentprev 选择器,您可以在隐藏字段中设置值。

示例

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

这只是我的方法和想法。

编辑 2

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

【讨论】:

  • 'System.Web.UI.WebControls.HiddenField' 没有名为 'CssClass' 或 'class' 的公共属性
  • 感谢@HarshitTailor 好的,我不知道这一点。但是他可以将它包装到一个容器中并在其上放置一个类。然后就可以轻松搞定了。
  • 我找到了另一个解决方案,你可以在我自己的答案中看到实现。但是谢谢你的回答:)
【解决方案3】:

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

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

如果此实现有缺陷或在某种程度上不好,请发表评论。

【讨论】:

  • 如果您可以使用静态标识符,那么肯定可以使用(ASP.NET 的冗长 id 从其概念开始就一直是 Web 的祸根),它将使这项任务和其他任务变得更轻松、更自然。唯一需要注意的是,这仅在 .NET 4.0 及更高版本中可用,因此请确保您的主机支持它。
  • 我不知道这是 4.0 的功能,可能因为我以前没见过。我的主机支持 4.0,所以这不是问题 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多