zoukankan      html  css  js  c++  java
  • GridView空记录时显示Header和Footer

      也有段日子没写什么东西了,也是因为以前闲了好长时间,最近一下又有活干了,也不是什么新任务,还是接着原来没做完的工作重新设计和动工,对原来做好的曲线图形开发一个常用属性的设置,普通用户就可以通过页面对图形显示的效果简单修改,而不单单只是程序员在程序的控件中修改。

      说实话具体的工作也没多大难度,主要在问题就在此维护工具的界面的设计和程序架构设计,一旦这方面做不好,后期进行扩展将会存在大量问题,有可能需要重新设计和开发,核心也是由于项目组中没有经验丰富的人带领,所以自己和其余几个人做的都很头大。

      维护工具界面主要采用GridView进行数据的增、删、改、显示,并且所有的数据都保存在Xml文件中,没有采用数据库对数据进行存储,所以Xml配置文件的设计需要合理的格式。

      看到标题,大家也会明白GridView中采用了模板列

        <ItemTemplate> 用于显示数据控件Label

        <EditItemTemplate> 用于编辑和保存的时候显示控件,根据所需选择

        <FooterTemplate> 用于增加的时候显示的控件,根据所需选择

      大家都应该清楚,在没有数据的时候,GridView是不显示的,只会显示EmptyDataText里填写了文本。在真正做的时候确遇到了相当多问题,有记录的时候增、删、改功能不会存在什么问题,一旦没记录原本想让显示Header和Footer,但是结果却是什么都不显示,也试了好多方法,结果都不令人满意,比如:可以创建一个DataTable,添加一条空记录,重新对GridView进行填充和绑定,这样虽然显示了Header和Footer,但是空记录也随之显示了,因为我之前我给GridView增加了一列自增编号,此列就会显示1。

      代码如下:

    代码
    1 protected DataTable GetEmptyDataGrid()
    2 {
    3 DataTable dt = new DataTable("Table1");
    4 //没有数据时模拟出一些原始数据绑定GridView
    5   dt = new DataTable();
    6 //dt.Columns.Add("id");
    7   dt.Columns.Add("csmc");//参数名称
    8   dt.Columns.Add("csbl");//参数变量
    9   dt.Columns.Add("cslx");//参数类型
    10   dt.Columns.Add("sfjl");//是否级联
    11   dt.Columns.Add("mrz");//默认值
    12 dt.Columns.Add("sql");//SQL填充
    13 DataRow dr = dt.NewRow();
    14 dt.Rows.Add(dr);
    15 dt.AcceptChanges();
    16 return dt;
    17 }

      经过自己的不懈努力和网上的资料,最后总算是找到了一个解决方法,也达到了想要的结果。

      在GridView的PreRender事件中,判断 Rows.Count 是否等于0,再执行函数renderEmptyGridView函数,这样也就实现了新增的功能。

      具体代码如下:

    代码
    1 protected void GridView1_PreRender(object sender, EventArgs e)
    2 {
    3 if (GridView1.Rows.Count == 0)
    4 {
    5 renderEmptyGridView(GridView1, "csmc, csbl, cslx, sfjl, mrz, sql");
    6 }
    7 }
    8 public static void renderEmptyGridView(GridView EmptyGridView, string FieldNames)
    9 {
    10 //将GridView变成只有Header和Footer列,以及被隐藏的空白资料列
    11 DataTable dTable = new DataTable();
    12 char[] delimiterChars = {','};
    13 string[] colName = FieldNames.Split(delimiterChars);
    14 foreach (string myCol in colName)
    15 {
    16 DataColumn dColumn = new DataColumn(myCol.Trim());
    17 dTable.Columns.Add(dColumn);
    18 }
    19 DataRow dRow = dTable.NewRow();
    20 foreach (string myCol in colName)
    21 {
    22 dRow[myCol.Trim()] = DBNull.Value;
    23 }
    24 dTable.Rows.Add(dRow);
    25 EmptyGridView.DataSourceID = null;
    26 EmptyGridView.DataSource = dTable;
    27 EmptyGridView.DataBind();
    28 EmptyGridView.Rows[0].Visible = false;
    29 }

      在此感谢此人的帖:http://hi.baidu.com/fancyaj/blog/item/13ce292e05283d584fc2265c.html

      如果大家还有其它什么好的方法,欢迎留言,共同进步~~~

     

  • 相关阅读:
    TensorFlow(十五):使用inception-v3实现各种图像识别
    TensorFlow(十四):谷歌图像识别网络inception-v3下载与查看结构
    TensorFlow(十三):模型的保存与载入
    TensorFlow(十二):使用RNN实现手写数字识别
    TensorFlow(十一):递归神经网络(RNN与LSTM)
    TensorFlow(十):卷积神经网络实现手写数字识别以及可视化
    ffmpeg-20160628-git-bin.7z
    ffmpeg-20160617-git-bin.7z ffmpeg-20160626-git-bin.7z
    欧洲杯 2016 高清直播
    YY 神曲 李明霖 14部合集
  • 原文地址:https://www.cnblogs.com/ZHF/p/1723853.html
Copyright © 2011-2022 走看看