DataGrd(Asp.net)的重新綁定問題

來源:互聯網
上載者:User
       DataGrid(自動建立列)在綁定資料後,一般在(非grid事件觸發導致的)頁面回傳時,是不需要重新綁定的,DataGrid仍然顯示回傳前的資料。但當Datagrid 處於“Edit”(編輯)模式時,就需要重新綁定,否則編輯行全是空值。假如我們取消編輯(並重新綁定),那麼已編輯的值被資料來源中的原始值覆蓋。
       那麼為什麼需要重新綁定呢?本來不“Edit”的時候,資料來來回回都能顯示,為什麼一編輯,Grid就不知道原來資料了?需要再次綁定--給它資料。
       從模本列(ItemTemplate)的使用過程出發,或許能理解這一點。模板列為了更靈活的控制grid的顯示,對編輯(可能使用TextBox)和正常顯示(Literal)狀態都可以靈活定製,而每種狀態下的資料都可以靈活呈現。因此,在切換狀態時,Grid 可能由於不知道它需要如何顯示資料,而乾脆不顯示資料。不過事實正好相反,當Grid沒有使用模板列指定編輯狀態下顯示控制項時,預設將是TextBox,既然Bill知道這一點,也知道回傳回來的資料(原Grid的資料),它為什麼不自動賦值?而一次次叫大家重新綁定?
      從另一個角度去看,假如對Grid的每一列都使用模板列動態建立,它的正常顯示狀態,也就是模板列的ItemTemplate,都以TextBox方式顯示資料而不是使用Literal。此時整個Grid顯示出來時,每個儲存格都是可以直接編輯的。那麼頁面回傳後,假如不重新綁定的話,那麼已編輯的值 不會被資料來源中的原始值 覆蓋,這是可以理解的。當假如重新綁定 ,還記得第一段的“覆蓋”嗎?
       這個問題或許可以如此猜測:頁面回傳是包含動態建立的頁面,以及相關資料。但回傳後Asp.net依照原始頁重新建立該頁,並比照回傳的頁資料,把該儲存狀態的資料重新填上。那這機制究竟是什麼呢?
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.