zoukankan      html  css  js  c++  java
  • 扩展GridView实现无数据处理

    提出需求

    GridView控件在开发后台管理的时候非常方便快速,但是要实现没有数据时显示“没有数据”,并居中,是一件比较麻烦的事情,这里在一个公开的方法里实现了绑定List<T>和DataTable时,如果没有记录显示“没有数据”和表头。

    显示效果

    实现代码

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Reflection;
    using System.Web;
    using System.Web.UI.WebControls;
    
    /// <summary>
    /// ControlExtension 的摘要说明
    /// </summary>
    public class ControlExtension
    {
        public ControlExtension()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
    
        private static string EmptyText = "没有记录";
    
        /// <summary>
        /// 防止PostBack后Gridview不能显示
        /// </summary>
        /// <param name="gridview"></param>
        private static void ResetGridView(GridView gridview)
        {
            //如果数据为空则重新构造Gridview
            if (gridview.Rows.Count == 1 && gridview.Rows[0].Cells[0].Text == EmptyText)
            {
                int columnCount = gridview.Columns.Count;
                InitGridView(gridview, columnCount);
            }
        }
    
        private static void InitGridView(GridView gridview, int columnCount)
        {
            gridview.Rows[0].Cells.Clear();
            gridview.Rows[0].Cells.Add(new TableCell());
            gridview.Rows[0].Cells[0].ColumnSpan = columnCount;
            gridview.Rows[0].Cells[0].Text = EmptyText;
            gridview.Rows[0].Cells[0].Style.Add("text-align", "center");
        }
    
        /// <summary>
        /// 绑定数据到GridView,当表格数据为空时显示表头
        /// </summary>
        /// <param name="gridview"></param>
        /// <param name="table"></param>
        public static void GridViewBind(GridView gridview, DataTable table)
        {
            //记录为空重新构造Gridview
            if (table.Rows.Count == 0)
            {
                table = table.Clone();
                table.Rows.Add(table.NewRow());
                gridview.DataSource = table;
                gridview.DataBind();
                int columnCount = gridview.Columns.Count;
                InitGridView(gridview, columnCount);
            }
            else
            {
                //数据不为空直接绑定
                gridview.DataSource = table;
                gridview.DataBind();
            }
    
            //重新绑定取消选择
            gridview.SelectedIndex = -1;
        }
    
        public static void GridViewBind<T>(GridView gridview, List<T> list)
        {
            //记录为空重新构造Gridview
            if (list.Count == 0)
            {
                DataTable table = new DataTable();
                DataRow dr = table.NewRow();
                Type type = typeof(T);
                foreach (PropertyInfo p in type.GetProperties())
                {
    
                    DataColumn dc = new DataColumn(p.Name);
                    table.Columns.Add(dc);
                }
                table.Rows.Add(table.NewRow());
                gridview.DataSource = table;
                gridview.DataBind();
                int columnCount = gridview.Columns.Count;
                InitGridView(gridview, columnCount);
            }
            else
            {
                //数据不为空直接绑定
                gridview.DataSource = list;
                gridview.DataBind();
            }
    
            //重新绑定取消选择
            gridview.SelectedIndex = -1;
        }
    
    }

    调用代码

    ControlExtension.GridViewBind<Apis>(this.GridView1, list);

    更简单的办法

    其实有更简单的方法,刚刚发现,代码如下,应该要Net4.0才支持。

            this.GridView1.ShowHeaderWhenEmpty = true;
            this.GridView1.EmptyDataText = "没有记录";
  • 相关阅读:
    AppCrawler自动化遍历使用详解(版本2.1.0 )
    python 接口测试1 --如何创建和打印日志文件
    通过Xshell登录远程服务器实时查看log日志
    java基础知识6-- 抽象类,抽象方法,接口,构造方法,类方法等易混淆的知识点
    java基础知识5--集合类(Set,List,Map)和迭代器Iterator的使用
    java基础知识4--数组的常用方法(Array)
    java基础知识3--如何获取资源文件(Java中获取资源文件的url)
    java基础知识2--String,StringBufffer,StringBuilder的区别
    java基础知识1--String常用方法总结
    javascript正则表达式验证密码(必须含数字字符特殊符号,长度4-16位之间)
  • 原文地址:https://www.cnblogs.com/shya/p/4415709.html
Copyright © 2011-2022 走看看