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

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

  维护工具界面主要采用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

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

GridView空记录时显示Header和Footer相关推荐

  1. DataList在无数据记录时显示类似GridView空模板(EmptyDataTemplate)

    在FooterTemplate加个Label并根据repeater.Items.Count判断是否有记录.HTML代码: <FooterTemplate>         <asp: ...

  2. android 在自定义的listview(有刷新加载项)列表中,数据过少时不能铺满整个屏幕时,header和footer同时显示问题...

    android  在自定义的listview(有刷新加载项)列表中,数据过少时,当刷新时,加载项也会显示,这是很头疼的一个问题,查阅了一些资料,总结了一个比较不错的方法: 原来代码: 1 @Overr ...

  3. Repeater在无数据记录时显示“无相关记录...”

    2019独角兽企业重金招聘Python工程师标准>>> <table class="r_line" cellpadding="3" ce ...

  4. GridView绑定DataSet的DataTable,怎么让它在无记录时能显示表头呀(环境VS2005),在线等 谢谢!!

    主 题:   GridView绑定DataSet的DataTable,怎么让它在无记录时能显示表头呀(环境VS2005),在线等 谢谢!! 作 者:   bolowang (波罗王子)        ...

  5. 服务器控件下拉框显示隐藏,演练:在 GridView Web 服务器控件中编辑时显示下拉列表...

    演练:在 GridView Web 服务器控件中编辑时显示下拉列表 08/18/2008 本文内容 更新:2007 年 11 月 GridView 控件默认显示用于编辑的文本框.可以使用 ASP.NE ...

  6. L版本通话记录里面显示的通话时长与实际不一致的问题

    [DESCRIPTION] SW Version:L0.L1 1. 问题1:通话记录里面显示的通话时长与实际不一致的问题. 2. 问题2:通话过程中去设置时间,通话计时时间会变的问题. [SOLUTI ...

  7. 用于解决listview嵌套GridView时显示不全的问题。

    package com.yetu.ofmy; import android.view.MotionEvent; import android.widget.ListView; /** * * @Cla ...

  8. 在报表(FastReport)中动态载入jpg照片,预览时所有的记录都显示的是一张照片

    在报表(FastReport)中动态载入jpg照片,预览时所有的记录都显示的是一张照片 unit Unit1; interface uses Windows, Messages, SysUtils, ...

  9. 实现带header和footer功能的RecyclerView

    这个项目很简单,其实一年前就开发完成了,但是一直没闲下来去整理. RecyclerView是Android 5.0版本引入的一个新的组件,目的是在一些场景中取代之前ListView和GridView, ...

最新文章

  1. 【NOIP校内模拟】T2 华莱士(环套树)
  2. ftp服务器上传的文件打不开,ftp服务器文件有的上传不了
  3. Java -- 基于JDK1.8的LinkedList源码分析
  4. springmvc原理详解(手写springmvc)
  5. javascript 值传递与作用域
  6. NeHe教程Qt实现——lesson10
  7. java程序编译_Java程序的编译过程
  8. 43行代码AC——例题6-8 树(Tree,UVa 548)——解题报告
  9. 【防守方基础】危险报文识别
  10. 敲7(升级版约瑟夫)
  11. html 文本横向,纯css 如何实现文本超出部分横向滚动
  12. mac os 10.10下安装android studio问题:android studio was unable to find a valid jvm
  13. 万年历Java有界面_java万年历界面版
  14. DHCP八种报文及其详解
  15. 路由器怎么设置WiFi短信认证?
  16. 百度世界大会全新打开方式!VR会场“希壤”上线
  17. HDU-4747 Mex
  18. 解决ionic 中 $ionicHistory.goBack()无法返回问题
  19. 写一个矩阵相乘的函数
  20. 【STM32】标准库与HAL库对照学习教程八--串口通信详解

热门文章

  1. Eclipse——热键amp;Help
  2. 中秋应景诗词歌赋赏析
  3. 转载---设计模式分类
  4. Alone in Office
  5. c# 拼接Json串的几种方法
  6. 树莓派上传数据到onenet云平台
  7. 树莓派3B+运行arm_computer_library
  8. java和打印机_java实现打印机打印的区别
  9. python 垃圾回收哪时候执行_Python 中的垃圾回收机制是如何工作的?
  10. python3连接mysql使用mysqldb_Python3 连接Mysql数据库