【发布时间】:2011-11-26 06:52:55
【问题描述】:
编辑:
显然,问题的一部分在于,虽然 ASP:GridView 有一个 OnDataBound() 事件(您可以在代码隐藏中使用),但生成的相应 HTML 表没有,因此您可以将该事件附加到 JavaScript。 (我做对了吗?)所以,这就是我在这个问题上遇到麻烦的原因。回到绘图板。
我是一名桌面开发人员(带有 VB.NET 的 WinForms)正在过渡到 ASP.NET 开发。我的思绪真的围绕着 DOM、JavaScript 和会话状态以及与 Web 开发相关的所有东西。我并不愚蠢,而且我已经完成了研究(包括观看数小时的视频和阅读数百页的“ASP.NET 简介”),但我总是遇到一些看似相当简单的问题。
基本上我现在的情况可以总结如下:
- 我有一个页面运行一个由用户启动的很长的进程。
- 这个漫长的过程可能需要几分钟,所以我想向用户指出正在发生的事情。
- 该过程完成后,我要么有:
一种。在 GridView 中显示的结果
湾。没有可显示的结果 - 如果我有结果要显示,我想显示它们。
- 如果我没有要显示的结果,我想向用户显示一个标签,上面写着“没有要显示的结果”。
什么工作:
- 我有一个基本页面,用户可以在其中选择开始和结束日期并开始检查过程。
- 检查过程运行良好(使用为此程序的桌面版本开发的 LINQ-to-SQL 逻辑)。
- 我的页面上有一个 UpdatePanel,它显示一个标签和一个动画 gif 来指示正在发生的事情。
- 如果我得到结果,它们会在我的 GridView 中正确显示。
什么不工作:
我很乐意为用户提供某种进度条来指示完成的实际进度,而不是一些无休止的动画 gif,它根本没有太多指示。我可以快速轻松地计算出这个值,但不知道如何将这个值从服务器传输到网页。
我不知道如何触发标签的“取消隐藏”事件。长时间运行的过程在按钮的单击事件处理程序中,我在其中运行我的自定义代码并生成一个 DataTable,然后我将其保存为会话变量,将其分配为 GridView 的 DataSource 并调用 GridView.DataBind()。当我尝试确定 DataTable 的内容并在那里隐藏/显示标签时,似乎什么也没发生。
问题 #2 是我真正需要弄清楚才能发布此网站的问题。我假设它涉及一个 JavaScript 解决方案,并且我尝试了一些东西,但我发现我真的是在猜测,并没有很好地掌握解决方案应该是什么样的。
这是我想选择性地显示/显示的标签:
<tr>
<td colspan="2" align="center">
<h2><asp:Label runat="server" ID="lblNoMissing" Text="No Missing Documentation Found" Visible="false"></asp:Label></h2>
</td>
</tr>
这是我正在尝试测试的 JavaScript 函数:
<script type="text/javascript">
function databound() {
var gridViewID = '<%=_gridView1.ClientID%>';
var labelID = '<%=lblNoMissing.ClientID%>';
var gridView = document.getElementById(gridViewID);
if (gridView.rows.length > 0) {
$get(labelID).style.visibility = "false";
} else {
$get(labelID).style.visibility = "true";
}
}
</script>
问题:失败(数据绑定不是 Default.aspx 的成员):
<asp:GridView ID="_gridView1" runat="server"
AllowSorting="True" AutoGenerateColumns="False" CellPadding="4"
ForeColor="#333333" GridLines="Horizontal" PageSize="20" OnDataBound="databound();">
// Rest of GridView definition removed
</asp:GridView>
我错过了什么?
谢谢!!!!
【问题讨论】:
标签: javascript asp.net vb.net