• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        運用 ASP+ 下文綁定控件(中)

        運用 ASP+ 下文綁定控件(中)

        更新時間:2022-05-09 文章作者:未知 信息來源:網絡 閱讀次數:

        Repeater1Page 類覆蓋了 Page 類的 OnLoad 方法。此表示在對該頁
        的首次請求中調用 DataBind。這將導致對這些頁上的數據綁定表達式求
        值并使 repeater 控件列舉數據源以及創建其項目。僅在首次請求時調用
        DataBind 方法。這之所以能正常工作是因為 repeater能夠在從前一次保
        存狀態的回傳過程中重新創建其項目,而無需數據源實例。

          此頁將類型ICollection 的公用屬性顯露出來。這將在設置repeater
        的 DataSource 屬性值的數據綁定表達式中使用。屬性的獲取實現使用包
        含一組SiteInfo對象序列的ArrayList。此屬性是公用的,因為只有頁類
        的公用和保護成員可在數據綁定表達式中使用。

          每個SiteInfo 對象有兩個屬性:SiteName 和 SiteURL。當對模板中
        的HyperLink 控件進行數據綁定時將訪問這些屬性。在此控件的綁定表達
        式中,Container.DataItem 表示要將特定項綁定到其上的單個 SiteInfo
        對象。DataBinder.Eval(Container.DataItem, "SiteName") 訪問當前
        SiteInfo 對象的 SiteName 屬性。

          Repeater1 示例向您介紹了幾個基本概念:

        ●定義模板
        ●模板中的數據綁定語法和數據綁定表達式
        ●將 ArrayList 的 ICollection 表示用作數據源
        ●在最初處理頁的過程中調用 DataBind 方法

        DataList 控件

          DataList控件是一個模板化控件,它提供使用樣式屬性可視化地格式
        化其表示的能力。它也可以產生多列布局。

        摘自 DataList1.aspx:

        〈%@ Page language="C#" src="DataList1.cs" inherits="Samples.
        DataList1Page"%〉
        ...

        〈asp:DataList runat=server id="peopleDataList"
         RepeatColumns="2" RepeatDirection="Vertical" RepeatMode="Table"
         Width="100%"〉

         〈property name="AlternatingItemStyle"〉
          〈asp:TableItemStyle BackColor="#EEEEEE"/〉
         〈/property〉
         〈template name="ItemTemplate"〉
          〈asp:Panel runat=server font-size="12pt" font-bold="true"〉
           〈%# ((Person)Container.DataItem).Name %〉
          〈/asp:Panel〉
          〈asp:Label runat=server Width="20px"
           BorderStyle="Solid" BorderWidth="1px" BorderColor="Black"
           BackColor='〈%# ((Person)Container.DataItem).FavoriteColor
           %〉'〉  
          〈/asp:Label〉
            
          〈asp:Label runat=server Font-Size="10pt"
           Text='〈%# GetColorName(((Person)Container.DataItem).
           FavoriteColor) %〉'〉
          〈/asp:Label〉
         〈/template〉
        〈/asp:DataList〉

        此 .aspx 文件顯示了用來生成此示例的 DataList 的聲明。

          在此示例中,DataList 的多列布局是通過將 RepeatColumns 屬性設
        置為“2”來實現的。將RepeatDirection設置為“Vertical”會使項目從
        上到下、然后從左到右排列。相反,值設置為“Horizontal”會導致項目
        從左到右、然后從上到下排列。

          aspx語法包含對少數幾種DataList的樣式屬性的設置。在此示例中,
        DataList的Width被設置為其父級的100%。設置具灰色背景的Alternating
        ItemStyle是為了獲得帶有條紋的外觀。此示例還說明模板可以包含任意
        復雜的控件定義,以滿足在每個項目內獲得理想布局的需要。

          最后此模板中的數據綁定表達式通過將Container.DataItem轉換為其
        類型來使用前期綁定。這不會招致與使用DataBinder.Eval(如 Repeater1
        中所示)相關聯的后期綁定的代價。但是,這種方法可能會產生可讀性較
        差的表達式。以下示例還給出了一個調用GetColorName方法(該方法是在
        本頁有代碼支持的文件中實現的)的表達式示例。

        DataList1.cs:

        namespace Samples {
          ...

          public class DataList1Page : Page {
            protected DataList peopleDataList;

            protected string GetColorName(Color c) {
              return
               TypeDescriptor.GetConverter(typeof(Color)).Convert
               ToString(c);
            }

            private void LoadPeopleList() {
              // 創建數據源
              Person[] people = new Person[] {
                new Person("Nikhil Kothari", Color.Green),
                new Person("Steve Millet", Color.Purple),
                new Person("Chris Anderson", Color.Blue),
                new Person("Mike Pope", Color.Orange),
                new Person("Anthony Moore", Color.Yellow),
                new Person("Jon Jung", Color.MediumAquamarine),
                new Person("Susan Warren", Color.SlateBlue),
                new Person("Izzy Gryko", Color.Red)
              };

              // 設置控件的數據源
              peopleDataList.DataSource = people;

              // 并使該控件用此數據源構建其項目
              peopleDataList.DataBind();
            }

            protected override void OnLoad(EventArgs e) {
              base.OnLoad(e);

              if (!IsPostBack) {
                // 首次請求此頁
                LoadPeopleList();
              }
            }
          }

          public sealed class Person {
            private string name;
            private Color favoriteColor;

            public Person(string name, Color favoriteColor) {
               this.name = name;
               this.favoriteColor = favoriteColor;
            }

            public Color FavoriteColor {
              get { return favoriteColor; }
            }
            public string Name {
              get { return name; }
            }
          }
        }

          在此頁中,控件的 DataSource 屬性是通過程序設置的,與在aspx文
        件中聲明性地設置相對。兩種方法的結果相同。無法選擇哪種方法,都必
        須調用 DataBind 方法,以便控件可以列舉其數據源并創建它要表示的項
        目。

          此示例中所用的數據源是 Person 對象的一個簡單數組。由于每個數
        組都實現ICollection方法,所以數組適合用作數據源。這顯示了將數據
        結構和類型用作數據源時可獲得的靈活程度。

        DataList1 示例介紹了下列概念:

        ●在模板中定義豐富的 HTML UI
        ●使用簡單數組作為數據源
        ●通過程序設置數據源
        ●數據綁定語法中所允許的各種表達式

        DataGrid 控件

          DataGrid 控件使您可以生成數據源格式豐富的列表表示。此外,它
        還支持隨其它操作選擇項目。

          本節的四個示例使用包含有關書名信息(標題、標題ID、作者、價格
        和出版日期)的表。全部數據都用TitlesDB.xml中的XML予以維持。在建
        立頁面來表示此表的內容并選擇書籍時,這些示例遵循增量方法。代碼列
        表包含黑體文本,以表明一個示例構建于以前示例時所作的更改。

        截自 TitlesDB.xml:

        〈root〉
        〈schema id="DocumentElement" targetNamespace=""
            xmlns=http://www.w3.org/1999/XMLSchema
            xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"〉
          〈element name="Title"〉
            〈complexType content="elementOnly"〉
              〈element name="title_id" type="string"〉〈/element〉
              〈element name="title" type="string"〉〈/element〉
              〈element name="au_name" type="string"〉〈/element〉
              〈element name="price" msdata:DataType="System.
              Currency"
                   minOccurs="0"
                   type="string"〉〈/element〉
              〈element name="pubdate" type="timeInstant"〉
              〈/element〉
            〈/complexType〉
            〈unique name="TitleConstraint" msdata:PrimaryKey="True"〉
              〈selector〉.〈/selector〉
              〈field〉title_id〈/field〉
            〈/unique〉
          〈/element〉
        〈/schema〉
        〈DocumentElement〉
          〈Title〉
            〈title_id〉BU1032〈/title_id〉
            〈title〉The Busy Executive's Database Guide〈/title〉
            〈au_name〉Marjorie Green〈/au_name〉
            〈price〉19.99〈/price〉
            〈pubdate〉1991-06-12T07:00:00〈/pubdate〉
          〈/Title〉
          ...
        〈/DocumentElement〉
        〈/root〉

          在典型的Web應用程序中,為了獲得最大的可伸縮性和性能上的好處,
        很可能會使用 Web服務或商業對象來存取數據。為了簡化這些示例并將注
        意力集中在使用 DataGrid 而不是數據存取上,我們選擇在應用程序啟動
        時一次性加載數據,并在 Global.asax 中的 ASP 應用程序狀態中高速緩
        存所得的DataSet,如下所示。

        截自 Global.asax:

        public void Application_OnStart() {
          FileStream fs = null;
          DataSet ds = null;

          try {
            fs = new FileStream(Server.MapPath("TitlesDB.xml"),
            FileMode.Open,
                      FileAccess.Read);
            ds = new DataSet();

            // 將 xml 文件中的數據加載到 DataSet 中
            ds.ReadXml(fs);
          } finally {
            if (fs != null) {
              fs.Close();
              fs = null;
            }
          }

          // 將數據集高速緩存到應用程序狀態中,以便在單個頁面中使用
          Application["TitlesDataSet"] = ds;
        }

        DataGrid1

          DataGrid1說明DataGrid的基本用法,說明控件如何用最少的用戶代
        碼生成表示來提供豐富的功能。

        截自 DataGrid1.aspx:

        〈%@ Page language="C#" src="DataGrid.cs" inherits="Samples.Data
        GridPage"%〉
        ...

        〈asp:DataGrid runat=server id="titlesGrid"〉
        〈/asp:DataGrid〉

          上面的.aspx 文件顯示在不設置 DataGrid 控件任何屬性的情況下對
        其進行聲明。

        DataGrid.cs:

        namespace Samples {
          ...

          public class DataGridPage : Page {
            protected DataGrid titlesGrid;

            public ICollection GetTitlesList() {
              // 從在應用程序狀態中高速緩存的 DataSet 中檢索標題列
              表。
              DataSet titlesDataSet = (DataSet)Application["Titles
              DataSet"];

              if (titlesDataSet != null) {
                return titlesDataSet.Tables["Title"].DefaultView;
              }
              else {
                return null;
              }
            }

            private void LoadTitlesGrid() {
              // 從數據庫中檢索數據
              ICollection titlesList = GetTitlesList();

              // 設置控件的數據源
              titlesGrid.DataSource = titlesList;

              // 并使它用此數據源構建其項目
              titlesGrid.DataBind();
            }

            protected override void OnLoad(EventArgs e) {
              base.OnLoad(e);

              if (!IsPostBack) {
                // 首次請求此頁
                LoadTitlesGrid();
              }
            }
          }
        }

          .cs文件包含用于此頁的代碼。此代碼與DataList1示例中使用的代碼
        功能相同。在對此頁的首次請求中,它覆蓋 OnLoad 方法以檢索數據并在
        調用DataBind之前設置控件的DataSource屬性。這將使DataGrid創建其項
        目,這些項目是表中必要的行。在回傳處理的過程中,DataGrid從狀態
        (該狀態包括在上一次請求中所保存的單元格內容)重新創建項目。

          此示例說明了 DataGrid 控件的 AutoGenerateColumns 屬性的功能。
        此屬性的默認值為 true。當設置為 true時,DataGrid將使用reflection
        檢查其數據源和對象,并為每個公用屬性或字段創建一個列。在此示例中,
        控件表示“標題”表中當前的所有字段。這一功能允許用最少的用戶代碼
        快速而容易地生成任何數據源的列表表示。

          每個自動生成列的類型都是BoundColumn。這種列類型將與其關聯的
        屬性值轉換為要用作表單元格文本的字符串。

        DataGrid2

          DataGrid2說明具有在.aspx文件中定義的Columns集合的DataGrid。

        摘自 DataGrid2.aspx:

        〈%@ Page language="C#" src="DataGrid.cs" inherits="Samples.Data
        GridPage"%〉
        ...

        〈asp:DataGrid runat=server id="titlesGrid"
           AutoGenerateColumns="false"〉
         〈property name="Columns"〉
          〈asp:BoundColumn headerText="Title" DataField="title"/〉
          〈asp:BoundColumn headerText="Author" DataField="au_name"/〉
          〈asp:BoundColumn headerText="Date Published" DataField="
          pubdate"/〉
          〈asp:BoundColumn headerText="Price" DataField="price"/〉
         〈/property〉
        〈/asp:DataGrid〉

          此.aspx文件顯示了一個具有用戶指定的列集合的 DataGrid 控件。
        此示例使用與 DataGrid1 相同的有代碼支持的文件,因為不需要更改任
        何代碼。

          DataGrid的AutoGenerateColumns屬性被設置為假,從而阻止控件自
        動生成列,而讓用戶負責定義將要在表中表示的列。

        有許多好處:
        ●您可控制列的順序。以聲明的順序表示列。另一方面,自動生成的列是
        按用映像檢索到的順序表示的,此順序不必與代碼中的列順序或數據庫表
        本身的列順序相匹配。
        ●可以用列的headerText屬性來指定每列的標頭。在前一個示例中,列標
        頭指明了字段名,這可能并不合適。當在此模式下使用控件時,Columns
        還提供其它可設置的屬性。
        ●自動生成的列的類型始終是 BoundColumn。指定列集合使用戶可以控制
        每列的類型。


        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲午夜无码久久久久| 手机在线免费视频| 在线观看亚洲精品国产| 亚洲精品久久无码| 成人性生交大片免费看午夜a | 国产成人精品久久免费动漫| 亚洲av丰满熟妇在线播放| 亚洲免费人成在线视频观看| 亚洲国产精品成人久久| 久久精品一区二区免费看| 久久国产精品亚洲综合 | 国产中文字幕在线免费观看| 国产亚洲精aa成人网站| 久久精品成人免费观看97| 亚洲精品国偷自产在线| 国产免费爽爽视频在线观看| 久久精品亚洲综合专区| 久久久久久曰本AV免费免费| 一级毛片视频免费观看| 亚洲伊人成无码综合网| 黄页免费在线观看| 亚洲AV无码国产精品色| 免费永久在线观看黄网站| 三上悠亚在线观看免费| 亚洲视频一区在线| 成人免费福利电影| 国产精品美女久久久免费| 亚洲精品国产成人99久久| 一个人看的www在线观看免费| 国产偷国产偷亚洲清高APP| 日日噜噜噜噜夜夜爽亚洲精品| 99久久久国产精品免费牛牛四川| 亚洲国产成人九九综合| 免费a级毛片在线观看| 美女视频黄a视频全免费网站色窝 美女被cao网站免费看在线看 | 亚洲heyzo专区无码综合| 久久亚洲AV永久无码精品| 亚洲精品在线免费观看视频| 亚洲精华国产精华精华液网站| 亚洲精品无码永久在线观看你懂的 | 国产亚洲免费的视频看|