服務器端動態加載DataGrid控件並設置其屬性

- 中國WEB開發者網絡 (http://www.webasp.net)
-- 技術教程 (http://www.webasp.net/article/)
--- 服務器端動態加載DataGrid控件並設置其屬性 (http://www.webasp.net/article/18/17953.htm)
-- 作者:未知
-- 發佈日期: 2005-04-26
DataGrid在Asp.net編程中佔有非常重要的地位,對於瀏覽器中大批量數據的呈現,DataGrid幾乎不可缺少。常用的設置DataGrid屬性的方法都是在前台由Asp語句實現,這樣顯然不適合DataGrid的動態加載,通過後台C#代碼實現前台的功能顯得非常重要,下面就通過一個實例來說明其設置方法。
同其它動態加載服務器控件的方法一樣,要在客戶端瀏覽器上呈現DataGrid,必須要有一個Panel容器控件來裝載它,生成方法如下:Panel Panel1=new Panel();
必要的話還可以設置該Panel的其它屬性,詳見附錄。
如果Panel的大小不隨DataGrid的大小發生變化,則需要加入如下代碼:
Panel1.Style["OVERFLOW"]="auto";
創建DataGrid控件:DataGrid myDataGrid=new DataGrid();
如果每一列的數據不是自動載入,而是人工綁定,則需要加入如下代碼:
myDataGrid.AutoGenerateColumns=false;
用如下語句設定每一列的標題,綁定的字節,並加入到myDataGrid控件當中:
          BoundColumn s1=new BoundColumn();
              s1.DataField="EmployeeID";
              s1.HeaderText="僱員ID";
              myDataGrid.Columns.Add(s1);
myDataGrid的位置通過如下代碼設置:
myDataGrid.Style["Position"]="Absolute";
myDataGrid.Style["Left"]="0px";
myDataGrid.Style["Top"]="0px";
其中Left和Top屬性是相對於上面Panel1的相對位置。
由於DataGrid的表現非常豐富,因此,其屬性設置非常繁雜,包括背景色和字體大小這樣細小的環節都可以按照用戶的定義設置,其詳細的屬性設置代碼見附錄。值得注意的是,CellPadding用於獲取或設置單元格的內容和單元格的邊框之間的空間量;CellSpacing用來獲取或設置單元格間的空間量;SelectedItemStyle用於獲取當前選定項的樣式屬性;ItemStyle用於獲取MyDataGrid控件中各項的樣式屬性;HeaderStyle用於獲取MyDataGrid控件中標題部分的樣式屬性;style屬性保證Header標題部分的中文顯示在一行之中。
通過如下代碼將MyDataGrid控件加入到Panel1中:
          Panel1.Controls.Add(myDataGrid);
最後需要連接相關數據庫,並將數據庫中數據加載到MyDataGrid的數據源中,詳見附錄。至此就完成了服務器控件DataGrid在後台添加的所有任務。
附錄:動態加載DataGrid控件的源代碼:
         Panel1.Style["Position"]="Absolute";
             Panel1.Style["Top"]="30px";
             Panel1.Style["Left"]="100px";
             Panel1.Style["Width"]="500px";
             Panel1.Style["Height"]="300px";

             Panel1.Style["OVERFLOW"]="auto";
             DataGrid myDataGrid=new DataGrid();
         BoundColumn s1=new BoundColumn();
             s1.DataField="EmployeeID";
             s1.HeaderText="僱員ID";
             myDataGrid.Columns.Add(s1);
         BoundColumn s2=new BoundColumn();
             s2.DataField="LastName";
             s2.HeaderText="姓";
             myDataGrid.Columns.Add(s2);
         BoundColumn s3=new BoundColumn();
             s3.DataField="FirstName";
             s3.HeaderText="名";
             myDataGrid.Columns.Add(s3);
         BoundColumn s4=new BoundColumn();
             s4.DataField="Title";
             s4.HeaderText="標題";
             myDataGrid.Columns.Add(s4);
         BoundColumn s5=new BoundColumn();
             s5.DataField="BirthDate";
             s5.HeaderText="生日";
             myDataGrid.Columns.Add(s5);
         BoundColumn s6=new BoundColumn();
             s6.DataField="Address";
             s6.HeaderText="地址";
             myDataGrid.Columns.Add(s6);
 
             myDataGrid.Style["Position"]="Absolute";
             myDataGrid.Style["Left"]="0px";
             myDataGrid.Style["Top"]="0px";
         myDataGrid.BorderColor=Color.FromName("#DEBA84");
             myDataGrid.BackColor=Color.FromName("#DEBA84");
             myDataGrid.Style["BorderStyle"]="None";
             myDataGrid.Attributes.Add("BorderStyle","None");
         myDataGrid.CellPadding=3;
             myDataGrid.CellSpacing=2;
             myDataGrid.Attributes.Add("BorderWidth","1px");
             myDataGrid.PageSize=2;
             myDataGrid.AutoGenerateColumns=true;
         myDataGrid.SelectedItemStyle.Font.Bold=true;
             myDataGrid.SelectedItemStyle.ForeColor=Color.White;
             myDataGrid.SelectedItemStyle.BackColor=Color.FromName("#738A9C");
         myDataGrid.ItemStyle.ForeColor=Color.FromName("#8C4510");
             myDataGrid.ItemStyle.BackColor=Color.FromName("#FFF7E7");
             myDataGrid.ItemStyle.HorizontalAlign=HorizontalAlign.Center;
         myDataGrid.ItemStyle.Wrap=false;
         myDataGrid.HeaderStyle.Font.Bold=true;
             myDataGrid.HeaderStyle.ForeColor=Color.White;
             myDataGrid.HeaderStyle.BackColor=Color.FromName("#A55129");
             myDataGrid.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;
             myDataGrid.HeaderStyle.Wrap=false;
         myDataGrid.AutoGenerateColumns=false;
             myDataGrid.HorizontalAlign=HorizontalAlign.Center;
         myDataGrid.PagerStyle.HorizontalAlign=HorizontalAlign.Center;
             myDataGrid.PagerStyle.Wrap=false;
             myDataGrid.Attributes.Add("style","word-break:keep-all;word-wrap:normal");
         Panel1.Controls.Add(myDataGrid);
   SqlConnection thisConnection=new SqlConnection ("Data Source=(local);Initial Catalog=Northwind;UID=sa;PWD=");
   SqlCommand thisCommand=thisConnection.CreateCommand ();
   try
   {
    thisConnection.Open ();
   }
   catch(Exception ex)
   {
    thisConnection.Close ();
   }
   thisCommand.CommandText ="select * from employees";
   SqlDataReader sqlDataReader;
   sqlDataReader=thisCommand.ExecuteReader ();
   myDataGrid.DataSource =sqlDataReader;
   
   myDataGrid.DataBind();
   sqlDataReader.Close();

webasp.net