日期:2014-05-20  浏览次数:20474 次

|M| 第二贴:页面中有两个DataGrid 其中一个我已经调好了他的样式 如何用代码让我的另一个DataGrid和他的一样 谢谢
刚才
cpp2017(慕白兄)
this.DataGrid2.ControlStyle.CopyFrom(this.DataGrid1.ControlStyle);

他并没有完全得到dg1的样式
我看了他的head不一样,foot不一样

谢谢

------解决方案--------------------


使用 SkinId

在theme 设置 样式就行了
------解决方案--------------------
利用style赋值看看
------解决方案--------------------
this.DataGrid2.HeaderStyle = this.DataGrid1.HeaderStyle;
this.DataGrid2.FooterStyle = this.DataGrid1.FooterStyle;

------解决方案--------------------
this.DataGrid2.ItemStyle.CopyFrom(this.DataGrid1.ItemStyle); this.DataGrid2.HeaderStyle.CopyFrom(this.DataGrid1.HeaderStyle); this.DataGrid2.FooterStyle .CopyFrom(this.DataGrid1.FooterStyle);
------解决方案--------------------
一种另类的方式:

private bool CloneDataGridStyle(DataGrid dataGrid,ref DataGrid newDataGrid)
{
string newDataGridID = newDataGrid.ID;
string aspxContent = null;
using(System.IO.StreamReader sr = new System.IO.StreamReader(Server.MapPath(this.Request.Url.AbsolutePath),System.Text.Encoding.Default))
{
aspxContent = sr.ReadToEnd();
}
string re = string.Format( "(? <datagrid> <asp:DataGrid(?:\\s+\\w+\\s*=\\s*[^> ]+)*\\s+id(?:\\s)*=(?:\\s)*\\\ "{0}\\\ "([^\\s> ]*.*?) </asp:DataGrid> ) ",dataGrid.ID);
System.Text.RegularExpressions.RegexOptions options = (((System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace | System.Text.RegularExpressions.RegexOptions.Singleline)
| System.Text.RegularExpressions.RegexOptions.Multiline)
| System.Text.RegularExpressions.RegexOptions.IgnoreCase);
if(Regex.IsMatch(content,re,options))
{
Match match = Regex.Match(content,re,options);
string datagridcontent = match.Result( "${datagrid} ");
try
{
Control c = this.Page.ParseControl(Regex.Unescape(datagridcontent));
newDataGrid = (DataGrid)c.Controls[0];
if(newDataGridID != null && newDataGridID != string.Empty)
newDataGrid.ID = newDataGridID;

}catch
{
return false;
}
}
else
return false;
return true;
}

调用:
DataGrid dg = new DataGrid();//this.DataGrid2;
if(CloneDataGridStyle(this.DataGrid1,ref dg))
{
//.......
}