1

我有执行此操作的 Javascript 代码:

var oObjchbox = document.getElementById("CheckBox_" + countyId);

CountyId 来自预先制作的图像地图。

另一方面,复选框是由 ASP.NET 创建的。我的第一次尝试是使用带有 asp:checkBox 的 asp.repeater,但这并没有奏效,因为 ASP.NET 坚持创建自己的 ID。另一种尝试是在没有 runat=server 的情况下使用 HTML INPUT,但随后复选框无法在往返中存活。

有没有人可以解决这个问题?我在这里发现了一个类似的问题 http://www.velocityreviews.com/forums/t301617-hijack-databoundliteralcontrol.html 但没有人回答他的问题。

4

3 回答 3

2

如果问题是从中继器中的复选框获取 ID,那么本文可能会有所帮助,选择 GridView 中的所有复选框。它展示了如何在 ASP.Net Gridview 上生成客户端全选功能。

您正在处理的问题并不少见。您想访问一个控件,该控件位于使用 JavaScript 重复布局(GridView、Repeater、DataList 等)的控件中。

要记住的是,您可以在 DataBound 事件(RowDataBoundItemDataBound)期间访问生成的 ClientId ,然后可以在客户端使用。

然后在回程中,因为这是一个标准控件,您应该能够找到它。但是,如果您使用的是中继器,那么更新数据可能需要更多的工作,因为控件本身更适合只读类型的显示。

如果问题是将每个控件映射到预定义的 StateCode,那么在 ItemDataBound 或 RowDataBound(如果您从 Repeater 更改为 Something else)事件中,您可以根据需要使用 1 个或 2 个参数调用 JavaScript 方法。currentCheckBoxId 和适当的 StateCode 单独或已经连接并将其用作查找类型功能。

很抱歉这两个答案,但是对于您实际尝试做的事情,这个问题似乎有点模糊,也许我只需要再喝一杯咖啡。希望这些想法之一有所帮助。

于 2009-04-26T12:28:15.347 回答
1

您可以使用 jquery 来解决这个问题,它提供了通过自定义查询选择元素的功能,例如

$("[id*=CheckBox1") - 返回 id 结尾为 CheckBox1 的所有元素。

$("[id^=CheckBox1") - 返回 id 开头为 CheckBox1 的所有元素。

您可以通过 contains word 和许多其他选择器找到。

更多信息 jquery.com,你会喜欢的 =)

于 2009-04-26T11:10:52.833 回答
1

如果您的目标是检测服务器上选定的复选框,为什么不创建一个隐藏字段并通过在每次单击时连接国家 ID 来更新客户端以创建一个分隔列表,例如 usa;ca;nl?在回发中读取该值,解析,然后您就有了已选择的国家/地区。

在您的 PageLoad 问题中:RegisterHiddenField("txtCountryCodes","");

于 2009-04-26T11:42:28.750 回答