GridView自适应列宽 如何 GridView 动态生成列

来源:互联网  时间:2016/7/11 8:45:33

关于网友提出的“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);
            }

大概就是这种方式,具体应用稍微改改即可

上一篇将限制IP访问的代码改为允许访问的代码。谢谢
下一篇repeater全选之后的批量删除,如何实现?
明星图片
相关文章
《GridView自适应列宽 如何 GridView 动态生成列》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)