91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET2.0中如何使用數據源控件

發布時間:2021-07-16 11:19:27 來源:億速云 閱讀:258 作者:Leah 欄目:編程語言

本篇文章為大家展示了ASP.NET2.0中如何使用數據源控件,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

ASP.NET2.0數據源控件一.數據綁定控件新做法

1. ***種為純代碼做法,這種做法比較的煩瑣

2.新做法數據綁定控件與數據源控件結合.不同之處則是不需要寫重復代碼, 如

﹤asp:GridView ID="GridView1" runat="server"           DataSourceID="SqlDataSource1" AutoGenerateColumns="False"﹥      ﹤Columns﹥          ﹤asp:BoundField DataField="CompanyName"           HeaderText="CompanyName" SortExpression="CompanyName" /﹥          ﹤asp:BoundField DataField="ContactName"            HeaderText="ContactName" SortExpression="ContactName" /﹥      ﹤/Columns﹥  ﹤/asp:GridView﹥  :SqlDataSource ID="SqlDataSource1" runat="server"            ConnectionString="﹤%$ ConnectionStrings:NorthwindConnectionString2 %﹥"     SelectCommand="SELECT [CompanyName], [ContactName] FROM [Customers]"﹥﹤/asp:SqlDataSource﹥

上面的做法是ASP.NET2.0里面新增的,如果你沒有學過ASP.NET1.1而直接學2.0的話,上面的寫法是非常簡單的,沒有寫一行的代碼.

這樣的做法可能會讓人產生以下幾點看法

(1)初學者認為ASP.NET真的很簡單,是的很簡單,在簡單的同時你也該意識到數據源控件為你做了重復的工作,快速開發的同時你是否該了解下上面的做法是如何實現的

(2)接觸過.net一段時間的人則會認為DataSource數據源控件只是小兒科,大項目怎么可以這么做,對其不放心,還是自己手動寫代碼比較放心-_-.

數據源控件好不好用這里不必討論,但我想大多數人還是向其靠攏的.

ASP.NET2.0數據源控件二.數據綁定控件相同機制

數據綁定控件需要數據源

(1)在沒有數據源控件之前,數據綁定控件需要先給DataDource屬性賦值獲取數據源,然后執行DataBind()方法

(2)在數據源控件出現之后,數據綁定控件仍然需要數據源,只不過方式發生了變化,不是通過DataDource屬性直接的獲取,而是間接的通過數據源控件獲取,然后幫你自動執行了DataBind()方法

所以這里需要注意的是,當設置DataDourceID的時候,不需要再調用DataBind()方法,兩種方法不可同時使用

站在使用者的角度,***的變化也就是給我們兩種數據綁定做法的選擇.偷懶的我們當然愿意選擇后一種,一切交給數據源控件為我們處理.

ASP.NET2.0數據源控件三.數據綁定控件新的起點

上篇我們講到過BaseDataList類 .1.1中的舊的數據綁定控件從此抽象類中繼承下來,而2.0中新的數據綁定控件,并沒有這么做,而是從BaseDataBoundControl類重新開始,以此為基礎.net為我們定義了一些比較實用的類.當然在.net2.0中,BaseDataList類也提供了DataDourceID屬性,但微軟也很明確的表示讓我們棄用DataGrid,使用GridView . 暫時我們先不去想為什么,只有了解以后,我們才能去比較

在微軟的MSDN上,早就有篇文章介紹ASP.NET 2.0 和數據綁定控件:新的角度,新的做法  大家可以看看

這次我們只需要了解兩個基類

ASP.NET2.0中如何使用數據源控件

兩個類都為抽象類BaseDataBoundControl類定義了兩個抽象方法PerformSelect和ValidateDataSource由子類實現.

雖然你不需要對這兩個類的實現了解很多,但你需要知道兩個類為你做了什么.

1.BaseDataBoundControl類大致做了如下工作

定義了基本的DataSource和DataSourceID基本屬性,我們稱為數據源標識

其主要提供了兩種不同做法的實現機制

(1)定義了DataSource,則會驗證數據源的正確性即ValidateDataSource方法(此過程由子類完成),還需要手動調用DataBind方法

(2)定義了DataSourceID,則會自動調用DataBind方法

當定義了以上其中一個屬性時,這個類便幫你做了以下執行過程,所以你還需要了解以下成員

OnDataPropertyChanged 方法(當定義了數據源標識或其發生變化后)

RequiresDataBinding方法(確定要開始調用DataBind方法)

EnsureDataBound 方法(判斷如若定義DataSourceID屬性,則執行DataBind方法,所以此步驟是關鍵點)

DataBind 方法(在次方法中執行了PerformSelect方法檢索數據并把數據綁定到控件,此過程由子類完成)

2.DataBoundControl 類開始真正的與數據源控件開始交互,請看下面主要實現
(1)GetDataSource方法(檢索與數據綁定控件關聯的IDataSource接口,即從DataSourceID屬性屬性)

(2)GetData方法(從數據源控件檢索數據源視圖,這個方法是數據的主要來源)

(3)PerformSelect 方法(從GetData方法中檢索數據,然后調用PerformDataBinding方法)

(4)PerformDataBinding方法(將檢索到的數據綁定到控件上,此方法為空實現,留給子類實現)

注意點:如果未設置DataSourceID屬性,(1)(2)步驟可以省去,從(3)開始必然會執行.

一般情況下,簡單的數據綁定控件留給我們做的只剩下第4個步驟PerformDataBinding方法,你只需要重寫這個方法,獲取控件要呈現的數據就完成了.其他的事情就不需要你操心了.說了這么多,還是來看看示例代碼吧.

ASP.NET2.0數據源控件四.示例

代碼來自ASP.NET2.0揭密,我把重復的定義刪除了只留下PerformDataBinding方法

1.從DataBoundControl繼承

public class TextBoxSet : DataBoundControl      {      }

2.定義屬性

private IList alBoxSet;  public IList BoxSet  {      get     {          if (null == alBoxSet)          {              alBoxSet = new ArrayList();          }          return alBoxSet;      }  }  public string DataTextField  {      get     {          object o = ViewState["DataTextField"];          return ((o == null) ? string.Empty : (string)o);      }      set     {          ViewState["DataTextField"] = value;          if (Initialized)          {              OnDataPropertyChanged();          }      }  }

3.方法實現

protected override void PerformDataBinding(IEnumerable retrievedData)   {       if (retrievedData != null)       {            foreach (object dataItem in retrievedData)           {                TextBox box = new TextBox();                                  if (DataTextField.Length ﹥ 0)               {                   box.Text = DataBinder.GetPropertyValue(dataItem,                       DataTextField, null);               }               else              {                   PropertyDescriptorCollection props =                       TypeDescriptor.GetProperties(dataItem);                   box.Text = String.Empty;                   if (props.Count ﹥= 1)                   {                       if (null != props[0].GetValue(dataItem))                       {                           box.Text = props[0].GetValue(dataItem).ToString();                       }                   }               }                BoxSet.Add(box);           }       }   }   protected override void Render(HtmlTextWriter writer)   {                  if (BoxSet.Count ﹤= 0)       {           return;       }       if (Page != null)       {           Page.VerifyRenderingInServerForm(this);       }       writer.RenderBeginTag(HtmlTextWriterTag.Ul);       foreach (object item in BoxSet)       {            TextBox box = (TextBox)item;           writer.WriteBeginTag("li");           writer.Write("﹥");           writer.WriteBeginTag("input");           writer.WriteAttribute("type", "text");           writer.WriteAttribute("value", box.Text);           writer.Write("﹥");           writer.WriteEndTag("input");           writer.WriteEndTag("li");       }       writer.RenderEndTag();   }

接下來你便可以使用了

﹤aspDemo:TextBoxSet ID="TextBoxSet1" r   unat="server" DataSourceID="SqlDataSource1"             DataTextField="CompanyName" /﹥                ﹤asp:SqlDataSource ID="SqlDataSource1" runat="server"    ConnectionString="﹤%$ ConnectionStrings:NorthwindConnectionString2 %﹥"             SelectCommand="SELECT [CompanyName], [ContactName] FROM [Customers]"﹥   ﹤/asp:SqlDataSource﹥

上述內容就是ASP.NET2.0中如何使用數據源控件,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临朐县| 贡山| 淳化县| 五指山市| 昭苏县| 呼伦贝尔市| 东平县| 西吉县| 扶绥县| 杨浦区| 龙海市| 桃园市| 安丘市| 务川| 临湘市| 阿合奇县| 普陀区| 保靖县| 拉萨市| 本溪| 南漳县| 赫章县| 陕西省| 九台市| 滨海县| 南通市| 涟源市| 金湖县| 隆化县| 乌恰县| 巫山县| 汉寿县| 泗洪县| 青河县| 来凤县| 杨浦区| 甘孜县| 东安县| 清水县| 德安县| 霍州市|