GridView空记录时显示Header和Footer

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

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

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

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

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

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

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

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

  代码如下:

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
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函数,这样也就实现了新增的功能。

  具体代码如下:

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
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

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

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现 GridView 的上拉刷新和下拉加载,可以使用第三方库,例如 SmartRefreshLayout 或 SwipeRefreshLayout。 以下是使用 SmartRefreshLayout 实现 GridView 的上拉刷新和下拉加载的步骤: 1. 在项目的 build.gradle 文件中添加以下依赖: ```gradle implementation 'com.scwang.smart:refresh-layout-kernel:2.0.3' implementation 'com.scwang.smart:refresh-header-material:2.0.3' implementation 'com.scwang.smart:refresh-footer-ball:2.0.3' ``` 2. 在布局文件中添加 SmartRefreshLayout 和 GridView: ```xml <com.scwang.smartrefresh.layout.SmartRefreshLayout android:id="@+id/refreshLayout" android:layout_width="match_parent" android:layout_height="match_parent"> <GridView android:id="@+id/gridView" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="3" /> </com.scwang.smartrefresh.layout.SmartRefreshLayout> ``` 3. 在代码中初始化 SmartRefreshLayout 和 GridView,并设置上拉刷新和下拉加载的监听事件: ```java SmartRefreshLayout refreshLayout = findViewById(R.id.refreshLayout); GridView gridView = findViewById(R.id.gridView); // 设置上拉刷新和下拉加载的监听事件 refreshLayout.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh(@NonNull RefreshLayout refreshLayout) { // 执行下拉刷新操作 } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @Override public void onLoadMore(@NonNull RefreshLayout refreshLayout) { // 执行上拉加载操作 } }); ``` 4. 在上拉刷新和下拉加载的监听事件中更新 GridView 的数据,并在操作完成后调用刷新结束的方法: ```java // 下拉刷新操作 refreshLayout.finishRefresh(); // 上拉加载操作 refreshLayout.finishLoadMore(); ``` 通过以上步骤,就可以实现 GridView 的上拉刷新和下拉加载功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值