GridView多行标题行、改造标题行、自定义标题行完美版

时间:2021-09-25 19:39:57

网上找了个找,最终还是自己做的比较靠谱,道理很简单,直接看代码

GridView多行标题行、改造标题行、自定义标题行完美版
代码:
 
     /// <summary>
/// =================== 两行标题行 ========================
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GV1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
e.Row.Cells.Clear();
string[] capText = { "ID", "材料名称", "规格型号", "计量单位", "入库数量", "点验", "发料", "库存", "合同" };
int[] capWidth = { , , , , , , , , };
int[] capRowSpan = { , , , , , , , , };
int[] capColSpan = { , , , , , , , , };
GV1.Controls[].Controls.Add(CreateHeaderRow(capText, capWidth, capRowSpan, capColSpan)); capText = new string[] { "数量", "金额", "数量", "金额", "数量", "金额", "单价", "金额" };
capWidth = new int[] { , , , , , , , };
GV1.Controls[].Controls.Add(CreateHeaderRow(capText, capWidth, capRowSpan, capColSpan, true));
}
}
/// <summary>
/// ===================== 自定义标题行的方法 =========================
/// </summary>
/// <param name="tcText">单元格Text</param>
/// <param name="tcWidth">单元格宽度,为0则不设置宽度</param>
/// <param name="tcRowSpan">RowSpan</param>
/// <param name="tcColSpan">ColumnSpan</param>
/// <param name="noSpanRow">若为True,则忽略行、列的合并Span</param>
/// <returns>一行标题行</returns>
private GridViewRow CreateHeaderRow(string[] tcText, int[] tcWidth, int[] tcRowSpan, int[] tcColSpan, bool noSpanRow = false)
{
GridViewRow rowHeader = new GridViewRow(, , DataControlRowType.Header, DataControlRowState.Normal);
TableHeaderCell thc;
for (int i = ; i < tcText.Length; i++)
{
thc = new TableHeaderCell();
thc.Text = tcText[i];
if (tcWidth[i] > ) { thc.Width = tcWidth[i]; }//若为0,则不设置width
if (!noSpanRow)
{
if (tcRowSpan[i] != ) { thc.RowSpan = tcRowSpan[i]; }
if (tcColSpan[i] != ) { thc.ColumnSpan = tcColSpan[i]; }
}
rowHeader.Cells.Add(thc);
}
return rowHeader;
}