2017-04-08 61 views
2

克隆被DATATABLE生成數據源我有一個GridView如何結合gridview的,以允許尋呼時通過在asp.net

<asp:GridView ID="InGridView" PageSize="5" AllowPaging="true" runat="server" OnPageIndexChanging="InGridView_PageIndexChanging" ></asp:GridView> 

代碼結合到網格。

private void LoadGridView(string filename) 
{ 
    invTable = new DataTable(); 
    // gets data from uploaded csv file 
    DataTable csvDatatable=GetdataFromCSV(string filename) 
    // Code to populate invTable with the data.. 
    invTable= checkCsvandGetTable(csvDatatable) 
    InGridView.DataSouce = invTable; 
    inGridView.DataBind(); 

} 其中數據綁定正在對button_click和數據源進行數據表是其中我是從csv文件生成。

如何讓頁面在這樣的情況下

the invTable is null when i am selecting 2 page for first page its working fine. 

對此有何想法?

+0

你能分享你如何填充'invTable'的代碼,以及如何將GridView綁定到表上?有一件事你需要明白的是,ASP.NET是無狀態的。整個頁面生命週期在頁面被回發時每次被執行。所以如果你在button_click中初始化了表,它的值將不會在Postback或頁面刷新中持久化。 –

+0

@ChetanRanpariya是的,我已經初始化表按鈕click.any想法我們如何才能實現這個功能呢? – Harshit

+0

您需要再次初始化表格並使用分頁數據填充它,並將其綁定到InGridView_PageIndexChanged事件中的gridview。 –

回答

0

您需要重新加載invTable並將其綁定到PageIndexChanged事件中的GridView。

假設你有一個創建數據表的方法,用數據填充它並將其綁定到gridview。你從按鈕點擊調用這個方法。

private void LoadGridView() 
{ 
    invTable = new DataTable(); 
    // Code to populate invTable with the data.. 
    InGridView.DataSouce = invTable; 
    inGridView.DataBind(); 
} 

您需要從PageIndexChanged事件處理程序調用相同的方法。 因此,應該將InGridView的PageIndexChanged事件處理程序編寫如下。

protected void InGridView_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    InGridView.PageIndex = e.NewPageIndex; 
    LoadGridView(); 
} 

這應該可以解決您的問題。

+0

實際上,invTable是動態創建的,並且當頁面加載時它被丟棄,所以這種方法不會幫助。有一種方法可以緩存表格嗎? – Harshit

+0

這就是爲什麼您需要調用LoadGridView方法,該方法負責創建表並使用數據填充它。你試過這個代碼嗎?我會建議在做出任何結論之前嘗試使用此代碼。 –

+0

是的,我試過了。實際上invTable被填充的代碼是一個方法,它有40個條件可以檢查。在成功過濾時,它將數據從方法中獲取回表格。我已經更新了我的代碼,你可以檢查。 – Harshit