DataGridTableStyle style=new DataGridTableStyle();
style.MappingName="BM_HY";
style.AlternatingBackColor=System.Drawing.Color.Bisque; DataGridColumnStyle id=new DataGridTextBoxColumn();
id.MappingName ="HYBM";
id.HeaderText = "行业编号";
id.Width = 100;
style.GridColumnStyles.Add(id); DataGridColumnStyle name=new DataGridTextBoxColumn();
name.MappingName="HYMC";
name.HeaderText="行业名称";
style.GridColumnStyles.Add(name);
return style; this.dataGrid1.TableStyles.Clear();
this.dataGrid1.TableStyles.Add(style);
style.MappingName="BM_HY";
style.AlternatingBackColor=System.Drawing.Color.Bisque; DataGridColumnStyle id=new DataGridTextBoxColumn();
id.MappingName ="HYBM";
id.HeaderText = "行业编号";
id.Width = 100;
style.GridColumnStyles.Add(id); DataGridColumnStyle name=new DataGridTextBoxColumn();
name.MappingName="HYMC";
name.HeaderText="行业名称";
style.GridColumnStyles.Add(name);
return style; this.dataGrid1.TableStyles.Clear();
this.dataGrid1.TableStyles.Add(style);
現在我為一個 DataGrid 設定了一個以上的TableStyle ,我怎樣的 runtime 時根據需要動態的選擇一個來套用?
下面的代码使用FormatUI(control)来样式化页面中的指定形式的控件,由于我在系统中每一页均包含一个PageHead.ascx,我就将此函数放到此用户控件的Page_load中,如下:
private void Page_Load(object sender, System.EventArgs e)
{
//……
Func.FormatUI(this.Parent);
}//FormatUI函数如下:
public static void FormatUI(System.Web.UI.Control page)
{
for(int i=0;i<page.Controls.Count;i++){
switch(page.Controls[i].GetType().ToString()){
case "System.Web.UI.WebControls.TextBox":
case "InfoSmart.ISWebControlLib.ISTextBox":
System.Web.UI.WebControls.TextBox tb=(System.Web.UI.WebControls.TextBox)page.Controls[i];
if(tb.TextMode==System.Web.UI.WebControls.TextBoxMode.SingleLine || tb.TextMode==System.Web.UI.WebControls.TextBoxMode.Password)
tb.CssClass="txtSingle";
else
tb.CssClass="txtMulti";
break;
case "System.Web.UI.WebControls.DropDownList":
case "InfoSmart.ISWebControlLib.ISDropDownList":
((System.Web.UI.WebControls.DropDownList)page.Controls[i]).CssClass="ddlStyle";
break;
case "System.Web.UI.WebControls.Button":
case "InfoSmart.ISWebControlLib.ISButton":
System.Web.UI.WebControls.Button btn=(System.Web.UI.WebControls.Button)page.Controls[i];
string s=btn.Text;
if(s==">")
{
btn.BorderStyle=System.Web.UI.WebControls.BorderStyle.None;
btn.Text="";
btn.Width=13;
btn.Height=20;
btn.CssClass="btnSel";
}
else
{
btn.BorderStyle=System.Web.UI.WebControls.BorderStyle.None;
int k=InfoSmart.Common.StrLib.GetUnicodeLength(btn.Text.Trim(),true);
if(k==1)
{
btn.Width=30;
btn.CssClass="btn30";}
if(k==2)
{
btn.Width=40;
btn.CssClass="btn40";
}
else if(k<=4 && k>2)
{
btn.Width=70;
btn.CssClass="btn70";}
else if(k<=8 && k>4)
{
btn.Width=110;
btn.CssClass="btn110";}
else if(k<=12 && k>8)
{
btn.Width=160;
btn.CssClass="btn160";}
else if(k>12)
{
btn.Width=210;
btn.CssClass="btn210";}
}
break;
case "System.Web.UI.WebControls.DataGrid":
FormatGrid((System.Web.UI.WebControls.DataGrid)page.Controls[i]);
break;
case "InfoSmart.ISWebControlLib.ISTitleLabel":
InfoSmart.ISWebControlLib.ISTitleLabel lbl=(InfoSmart.ISWebControlLib.ISTitleLabel)page.Controls[i];
lbl.CssClass="pTitle";
break;
}
if(page.Controls[i].Controls.Count>0){
FormatUI(page.Controls[i]);
}
}//End of For
}//上述函数引用了一个FormatGrid函数,代码如下:
public static void FormatGrid(System.Web.UI.WebControls.DataGrid grd)
{
grd.BackColor=Color.FromArgb(69,149,207);
grd.ForeColor=Color.White;
grd.BorderColor=Color.White;
grd.CssClass="font9";
grd.BorderStyle=System.Web.UI.WebControls.BorderStyle.None;
foreach(System.Web.UI.WebControls.DataGridItem item in grd.Items)
{
if(item.ItemType.ToString()=="Item")
{
item.BackColor=Color.FromArgb(244,244,244);
item.ForeColor=Color.FromArgb(20,54,80);
}
else if(item.ItemType.ToString()=="AlternatingItem"){
item.BackColor=Color.FromArgb(213,232,245);
item.ForeColor=Color.FromArgb(20,54,80);
}
}//End of foreach
}//基本上,我使用这两个函数已经满足了我的要求,如果要更改所有DataGrid的演示,通过更改这两个函数,就可以实现。当然,如果将相关的CSS信息使用XML实现模板化,就最好了,不用修改程序