关于网友提出的“GridView自适应列宽 如何 GridView 动态生成列”问题疑问,本网通过在网上对“GridView自适应列宽 如何 GridView 动态生成列”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:GridView自适应列宽 如何 GridView 动态生成列描述:
需要生成如下图的一个表格:
序号 统计基准 异常
故障来源 责任人 责任部门
1 其他 李四 炼铁一 1
1 其他 李四 炼铁一 1
1 其他 李四 炼铁一 1
1 其他 李四 炼铁一 1
1 其他 李四 炼铁一 1
1 其他 李四 炼铁一 1
1 其他 李四 炼铁一 1
1 其他 李四 炼铁一 1
其中“统计基准”下面的列是动态的,不一定就只有三列,请问如何生成!???
解决方案1:
两种方法, 1.gridview 不设置 模板列,直接绑定数据,这样你查出几列就几列。
2.全部模板列在CS里动态生成
int i_Column, i;
string[] arrHeaderText, arrColumnName, arrVisible, arrTurnA2BSrc;
i_Column = 0;
listColumn = ndTable.SelectNodes("gridview/column");
colunm_Count = listColumn.Count;
arrHeaderText = new string[colunm_Count];
arrColumnName = new string[colunm_Count];
arrVisible = new string[colunm_Count];
arrTurnA2BSrc = new string[colunm_Count];
gv.Columns.Clear();
#region =============遍历xml=============
foreach (XmlNode ndColumn in listColumn)
{
arrHeaderText[i_Column] = (ndColumn.Attributes["headerText"] != null) ? ndColumn.Attributes["headerText"].InnerText : "";
arrColumnName[i_Column] = (ndColumn.Attributes["columnName"] != null) ? ndColumn.Attributes["columnName"].InnerText : "";
arrVisible[i_Column] = (ndColumn.Attributes["visible"] != null) ? ndColumn.Attributes["visible"].InnerText : "";
arrTurnA2BSrc[i_Column] = (ndColumn.Attributes["TurnA2BSrc"] != null) ? ndColumn.Attributes["TurnA2BSrc"].InnerText : "";
//通过配置文件或者其他方式确定需要生成几列
}
#endregion
#region =============生成列=============
if (!AutoColumn.Equals(string.Empty) && AutoColumn.ToUpper().Equals("YES") && i_Column > 0)//各种判断条件,判断生成什么样的列
{
BoundField bf1 = new BoundField();
bf1.HeaderText = "序号";
gv.Columns.Add(bf1);
}
for (i = 0; i <= i_Column - 1; i++)
{
BoundField bf = new BoundField();
bf.HeaderText = arrHeaderText[i];
bf.DataField = arrColumnName[i];
bf.Visible = Convert.ToBoolean(arrVisible[i]);
gv.Columns.Add(bf);
}
//是否需要ButtonField 若要则需要有相应的RowCommand 事件。
ButtonField buttonF = new ButtonField();
buttonF.CommandName = "btn_Delete";
buttonF.HeaderText = "删除";
buttonF.Text = "删除";
buttonF.ButtonType = ButtonType.Link;
gv.Columns.Add(buttonF);
ButtonField buttonF1 = new ButtonField();
buttonF1.CommandName = "btn_Edit";
buttonF1.Text = "编辑";
buttonF1.HeaderText = "编辑";
buttonF1.ButtonType = ButtonType.Link;
gv.Columns.Add(buttonF1);
#endregion
gv.AutoGenerateColumns = false;
gv.AllowPaging = true;
if (!pageSize.Equals(string.Empty))
{
gv.PageSize = Convert.ToInt32(pageSize);
}
大概就是这种方式,具体应用稍微改改即可