程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> DetailsView在PostBack後消失問題解決

DetailsView在PostBack後消失問題解決

編輯:.NET實例教程

今天非常郁悶,因為一個小問題折磨了我一天,前些天發現DetailsVIEw的好處,想今天在程序中正式使用一下,設置相關參數(DefaultMode="Edit")
DetailsVIEw1.DataSourceID = "SqlDataSource1"
SqlDataSource1.ConnectionString = "......";
SqlDataSource1.UpdateCommand = "UPDATE......";
SqlDataSource1.UpdateCommandType = SqlDataSourceCommandType.Text;
SqlDataSource1.SelectCommand = "SELECT....";
SqlDataSource1.SelectCommandType = SqlDataSourceCommandType.Text;
SqlDataSource1.SelectParameters.Add(new Parameter("ID", TypeCode.Int32));
SqlDataSource1.SelectParameters["ID"].DefaultValue = Request["ID"].Trim();
再寫上相關處理事件後,運行一切正常,誰能想到點了一下"更新"按鈕DetailsVIEw居然消失了,查看數據庫數據已經被修改了,根據以往的經驗,這種情況多是Page.IsPostBack引起的,查看程序改了改,運行後問題仍舊,才發現跟PostBack沒什麼關系,又試了N種辦法也不行,逐語句調試後也沒發現問題出在哪,查看MSDN也沒得到什麼解決辦法,百思不得其解,baidu google後,發現網上的文章多是抄MSDN上的例子,即一個DetailsView與一個DataGridView相互關聯,我只想讓DetailsVIEw與SqlDataSource關聯,因為這樣方便以後程序擴展,所以還得自己想辦法解決,經過不懈的努力終於找到了問題所在,以前在.net 1.1下編程時,控件的狀是不被保存的,也就是說每次在頁面PostBack後都得重新綁定數據,現在在.Net 2.0下通過逐語句調試發現SqlDataSource控件狀態並沒有被清除,即SqlDataSource1.SelectParameters會增加重復的參數,也就導致SqlDataSource在獲取數據時找不到指定的參數,那相應的也得不到結果,所以必須得在增加參數前將參數都清除
SqlDataSource1.SelectParameters.Clear();
SqlDataSource1.SelectParameters.Add(new Parameter("ID", TypeCode.Int32));
SqlDataSource1.SelectParameters["ID"].DefaultValue = Request["ID"].Trim();
這樣DetailsView1VIEw就不會消失了,看來我對.Net 2.0研究的還不夠,也不知道這樣解釋對不對,以後還得再多多學習 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved