/// <summary>
/// Repeater合并相同列
/// </summary>
/// <param name="R">要合并的Repeater</param>
/// <param name="columnId">合并的列Id集合</param>
/// <param name="flag">参照列</param>
private void DataMerge(Repeater R, string[] columnId, string flag)
{
int rowSpan = 1;
HtmlTableCell beginCell = null;
int N = Array.IndexOf(columnId, flag);
if (N < 0) return;
List<int> rowFlag = new List<int>();
for (int i = 0; i < columnId.Length; i++)
{
for (int j = 0; j < R.Items.Count; j++)
{
HtmlTableCell cell = R.Items[j].FindControl(columnId[i]) as HtmlTableCell;
if (beginCell == null) beginCell = cell;
else
{
if (GetHtmlText(beginCell) == GetHtmlText(cell))
{
if (i != N && rowFlag.Contains(j))
{
beginCell.RowSpan = rowSpan;
rowSpan = 1;
beginCell = cell;
}
else
{
cell.Visible = false;
rowSpan++;
}
}
else
{
beginCell.RowSpan = rowSpan;
if (i == N) rowFlag.Add(j);
rowSpan = 1;
beginCell = cell;
}
}
}
if (beginCell != null)
{
beginCell.RowSpan = rowSpan;
rowSpan = 1;
beginCell = null;
}
}
}
//获取控件的htmltext(用于html包含其他控件的控件)
private string GetHtmlText(System.Web.UI.Control control)
{
System.Text.StringBuilder strb = new System.Text.StringBuilder();
System.IO.StringWriter sw = new System.IO.StringWriter(strb);
System.Web.UI.HtmlTextWriter htw = new HtmlTextWriter(sw);
control.RenderControl(htw);
string str = strb.ToString();
Regex r = new Regex(@"<[^>]*>");
str = r.Replace(str, "");
Console.Write(str + "\n");
return str;
}
public override void VerifyRenderingInServerForm(System.Web.UI.Control control)
{
}
repeater 相同列合并函数(含参照列)
最新推荐文章于 2017-01-06 15:34:31 发布