服務器端動態加載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 |