編輯:
顯然,問題的一部分是,當一個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