javascript - 从 javascript 一致地访问 gridview 行数据
问题描述
我有一个包含使用 DataSourceID 属性绑定到它的 SQL 数据的 gridview 的 asp.net 网页。我希望能够从各种用户事件(如第二个网格视图中的按钮单击和行单击)启动 JavaScript,并使用 JavaScript 读取 gv1 数据并执行一些简单的操作。我的问题是,我的一些 JavaScript 调用在 gridview 中看到了数据,但很多时候我在 gridview 中看到的只是一个标题(没有数据行!)。
例如,如果我使用 Page_Load() 调用 JavaScript
ScriptManager.RegisterStartupScript(Me, Page.GetType, "Script", "jsPageLoadFirst();", True)
然后我总是在初始页面加载以及一些回发中看到 gridview 数据。然而,在其他回发中,gridview 已被剥离,我所看到的只是 gridview 标题(行未定义)。
同样,如果我在 html 正文中设置对 JavaScript 的调用
<body id="mybody" onload="JavaScript:myJSsub();">
JavaScript 子程序永远不会看到 gridview 数据;只有标题,但没有行。我认为客户端 onload 事件仅在页面完全加载后发生(包括所有数据绑定!)但显然不是!请注意,我总是在网页上看到显示的 gridview 数据,甚至在我单击按钮调用 JavaScript 之前,所以为什么 gridview 数据有时会被剥离对我来说是个谜!
几天来,我一直在拔头发,试图弄清楚这一点。谁能告诉我我做错了什么,以及如何确保 gridview 行数据始终可供我的 JavaScript 订阅者使用,无论我在哪里(或如何)启动它们?
谢谢!
-汤姆
10/7 更新:这里有更多信息,以及我今天使用隐藏字段想出的可能解决方法。首先,我主要使用对document.getElementById("gv1")
. 因此,首先,由于我从第一个服务器 PageLoad 事件触发的 JavaScript 子程序可以使用所有 gridview 数据,因此我尝试将 gridview 数据保存在全局变量“gvar1”和页面上的隐藏字段中“ HF1”。这是我的 JavaScript 的样子:
function jsPageLoadFirst() {
// Save gv1 to a global variable
gvar1 = document.getElementById("gv1");
// *** Also save gv1's html to a hidden field
document.getElementById("hf1").value = document.getElementById("gv1").innerHTML;
}
现在,在我从主体的 onload() 事件触发的 JavaScript 子程序中,我检查了所有三个的值。我总是发现 1)document.getElementById("gv1")
仅显示 gridview 标题(但没有行),2)gvar1
未定义,3)hf1
看起来很好 - 所有行数据都存在。同样,当从服务器 Postback 页面加载触发 javascript 时,有时会document.getElementById("gv1")
显示所有 gridview 数据,但有时它只显示 gridview 标题但没有行数据。有人可以向我解释为什么document.getElementById("gv1")
不总是显示行数据吗?我想如果我理解了这一点,我就能清楚地了解我的其余代码是否正常工作。谢谢!!!
解决方案
推荐阅读
- java - java中是否有限制组件仅在Frame中移动的功能?
- ios - 选择 QuickType 建议时如何移动到下一个文本字段?
- python - 如何使用 3d 平面绘制多元线性回归
- gnu - 如何确定 autoconf 的系统类型 --build 配置选项的正确输入?
- react-native - React Native FlatList 获得无限循环 onRefresh
- java - 当用户输入的数量未知时如何使用定长数组
- javascript - onchange 不通知(与选择字段一起使用)
- r - 如何绘制每个分类变量的箱线图,由 R 中的另一个分类变量包装
- c# - 如何确保两个或多个并发连接不超过一定范围 WebApi 核心
- ruby - 在我的程序中出现错误“没有将整数隐式转换为字符串”