亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一個UpdatePane和GridView使用時的詭異問題

一個UpdatePane和GridView使用時的詭異問題

繁星點點滴滴 2018-12-06 12:15:35
最近項目中用到微軟提供的UpdatePanel來做ajax,考慮其簡潔性和易用性,便毫不考慮就采用此方案,可是項目遇到一個讓我很是頭疼的問題,場景如下: 在一個UpdatePanel有一個GridView,其中該GridView的某些列是在服務器端通過邏輯控制顯示的效果,代碼如下: protected virtual void ListGridView_RowDataBound(object sender, GridViewRowEventArgs e)??????? {??????????? if (e.Row.RowType == DataControlRowType.DataRow)??????????? {??????????????? if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)??????????????? {??????????????????? if (e.Row.FindControl("DeleteButton") != null)??????????????????? {??????????????????????? ((LinkButton)e.Row.FindControl("DeleteButton")).Attributes.Add("onclick", "javascript:return confirm('你確認要刪除該條數據嗎?');");   ????????????????? e.Row.Cells[e.Row.Cells.Count - 3].Text = string.Format(Constants.UIStringDisabledLinkTemp, "download", "附件不存在,不能下載!");??????????????????? }??????????????? }??????????? }??????? } 在頁面第一次加載的時候,其一切都正常,可是當點擊GridView的排序的時候,之前格式化的附件不能下載的列,就發生了詭異變化,本來頁面初始化的時候判斷是不能下載,應該顯示灰色的下載圖片,可是點擊排序后頁面的圖片就都變成亮色了,跟斷點沒有發現什么錯誤,可是如果把GridView從UpdatePanel中拿出來,執行上面的操作沒有問題,就是在UpdatePanel中就有問題。 自己分析一下,UpdatePanel實際就是指定一個局部刷新的面板,當該面板中有任何請求服務器端的請求(其實就是_doPostBack事件),微軟的ScriptManager都會截獲請求,然后用ajax的方式發送到服務器端,從而實現異步刷新局部區域,當然在請求結束后頁面updatepanel內的元素將會重新刷新為最新的dom元素,這就讓我納悶了,難道我的代碼在服務器端沒有執行,可是斷點顯示在服務器端的邏輯一切都正常,可是就是到客戶端就發生這種莫名其妙的災難,難道是頁面的緩存?經過測試也不是,或者說頁面返回的dom元素是數據在還沒全部渲染后就返回的?或者說RowDataBound事件在服務器沒有執行完,就返回到頁面了? 總之很多的疑惑讓我很費解,還請那位大俠來指點一下,不勝感激。
查看完整描述

8 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

問題終于解決,在服務器端GridViewCommand事件里,在點擊EditButtong的邏輯里,最后要bindData一下,因為這樣才能再一次讓GridView自動調用RowDataBound事件,這樣DeleteButton的狀態就會正常,看來沒有弄明白事件的執行順序啊,慚愧!

查看完整回答
反對 回復 2019-01-21
?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

你還是對UpdatePanel不是很了解,建議你在網上看一下這個控件的用法。

查看完整回答
反對 回復 2019-01-21
?
手掌心

TA貢獻1942條經驗 獲得超3個贊

感謝你的回復,的確使用這個UpdatePanel也就是在這個項目中使用,根據我的理解:

UpdatePanel其實就是微軟設定一個局部更新的區域,他又很多更新方式,可以支持傳統的post更新,也支持異步更新,UpDateMode等一些基礎的特性都已經學習了,還有客戶端的ScriptManager客戶端生命周期也基本了解:begin_request, pageLoading, pageLoaded, endRequest等客戶端事件,不知道這里的問題是什么原因導致的,update的基本屬性都已經嘗試過也研究過也沒發現解決方案,還請大俠指教.

查看完整回答
反對 回復 2019-01-21
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

@shen110: 一直都沒看到你在哪里怎么把控制設置不可用,代碼貼出來看看。

查看完整回答
反對 回復 2019-01-21
?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

前端樣式和js的問題?猜的

查看完整回答
反對 回復 2019-01-21
  • 8 回答
  • 0 關注
  • 533 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號