[英]Cant get Gridview to refresh on update inside Update panel
我已經嘗試了所有可以找到的博客和論壇答案,但我仍然被困了幾天,想知道是否有人可以幫忙。
我的問題是我在UpdatePanel中有一個Gridview,鏈接到SQLDataSource。
在頁面加載第一次(不是回發)我從三個數據庫表中提取信息並將其寫入我的數據庫中的新半臨時表,然后設置SQLDataSource以從這個新表中選擇所有表並顯示在我的gridview中。 這非常有效。
顯示表格后,用戶可以編輯或選擇一行。 如果選擇了一行,它會突出顯示它並寫入臨時表,該行被標記為突出顯示(以便以后重新渲染),這樣就行了。
如果用戶單擊編輯,我將Gridview置於編輯模式,其中包含以下內容:
protected void DailySheetGV_RowEditing(object sender, GridViewEditEventArgs e)
{
// put Gridview into edit mode //
rowEditted = e.NewEditIndex;
DailySheetGV.EditIndex = rowEditted;
SqlDataSource1.SelectCommand = "SELECT * FROM ReportTempTable";
DailySheetGV.DataBind();
// ## //
}
這很好用。
我的問題是 ,當用戶點擊更新時,我寫了我的表更新的值,這很好,但在我的生活中,我無法通過重新數據綁定更新表的值來刷新Gridview (即從tempTable重新創建gridview)。
到目前為止我嘗試使用自動生成的更新按鈕,這會運行所有_RowUpdating(),_ PreRender()等函數,但無論我在哪里運行刷新代碼都不會刷新我的gridview甚至停止顯示更新按鈕和chnage回到編輯按鈕(注意:如果我點擊它的刷新按鈕)。
這是我自己的函數中的刷新代碼:
private void rebindGV()
{
DailySheetGV.DataSourceID = null;
DailySheetGV.EditIndex = -1;
DailySheetGV.DataBind();
UpdatePanel0.DataBind();
SqlDataSource1.SelectCommand = "SELECT * FROM ReportTempTable";
DailySheetGV.DataSourceID = "SqlDataSource1";
DailySheetGV.EditIndex = -1;
DailySheetGV.DataBind();
}
我也嘗試使用鏈接按鈕標簽'更新'並設置其CommandName =“更新”這實際更新並將gridview重置為EditIndex = -1(即再次顯示編輯按鈕)但通過我的代碼調試不運行任何_PreRender(),_ RowUpdated等函數都不會將Gridview數據更新為最新值,因為它實際上不會重新渲染。
任何幫助都是最受歡迎的,因為用完了頭發。
非常感謝。
使用MS SQL,ASP.NET4和C#。
關於這個論壇必定有一些神奇的東西,因為我一發布這個問題就意識到“如果我把這個添加到這里”會有什么感覺和瞧! 現在都在工作:)
無論如何回答我的問題,並在這里幫助其他人現在是我的refreshGV代碼
{
DailySheetGV.DataSourceID = null;
DailySheetGV.EditIndex = -1;
DailySheetGV.DataBind();
UpdatePanel0.DataBind();
UpdatePanel0.Update(); // new line added to get updatepanel to refresh
SqlDataSource1.SelectCommand = "SELECT * FROM ReportTempTable";
DailySheetGV.DataSourceID = "SqlDataSource1";
DailySheetGV.EditIndex = -1;
DailySheetGV.DataBind();
}
當我有時間看看我真正需要哪一條線時,我會再嘗試一下。
干杯
在將表更新回temp-table / some table檢查天氣之前,值是否真正更新回數據庫。 對於Web應用程序中的任何更新查詢,請查看以下提示。
我希望你再次按照調試應用程序所需的所有步驟...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.