编辑:
显然,问题的一部分是,当一个ASP:GridView控件有OnDataBound()事件(您可以在代码隐藏使用),对应的生成的HTML表格不是,因此您可以将该事件附加到JavaScript。 (我有没有这样做?)所以,这就是为什么我在这个问题上遇到麻烦。回到绘图板。更新ASP.NET页之后的GridView的DataBind
我是一个桌面开发人员(WinForms与VB.NET)过渡到ASP.NET开发。我的想法是真正围绕着DOM和JavaScript以及Session State和所有与Web开发相关的东西。我并不愚蠢,而且我已经完成了研究(包括几个小时的视频观看和数百页的“ASP.NET入门”阅读),但我一直在用看似相当直接的问题撞墙。
基本上,我目前的状况可以概括如下:
- 我有一个运行由用户发起一个很长的过程的页面。
- 长期的过程可能需要长达几分钟的时间,所以我想以指示某些事情正在发生的用户。
- 当过程结束后,我要么有:
一个。结果显示在GridView
b。没有结果显示 - 如果我有结果显示,我想显示它们。
- 如果我没有结果显示,我想向用户显示一个标签,上面写着“没有显示结果”。
什么工作:
- 我有,用户可以选择开始和结束日期,并揭开序幕检查过程中一个基本的网页。
- 检查过程正常(使用为此程序的桌面版开发的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>
我在想什么?
谢谢!
这就是我的想法!问题是,正如我上面所述,设置lblNoMissing.Visible不会在长时间过程结束时调用它时做任何事情。我说SEEM是因为我对ASP.NET还是很陌生,所以我可能会错过一些东西。在UpdatePanel中由Button生成长进程是否重要? – mbm29414
我不这么认为。我可能是错的(我对这一切还是比较陌生的),但除非if(!IsPostBack)在if语句的前后出现,否则它仍应呈现。 – Gobbledigook
此外,当你呈现你的页面,你得到JavaScript错误?在你的if(gridView.rows.length> 0)中,如果你没有任何行,是不是会引用一个空对象并且出错? – Gobbledigook