让Gridview在没有数据的时候显示

晨曦之光 发布于 2012/04/24 12:46
阅读 2K+
收藏 0

当对 GridView 控件进行数据绑定时,如果绑定的记录为空,网页上就不显示 GridView,造成页面部分空白,页面布局结构也受影响。下面讨论的方法可以让 GridView 在没有数据记录的时候显示表的字段结构和显示提示信息。


为了让 GridView 显示数据,在数据库中建立表 Student,其字段如下:
id  nchar(10)
name  nchar(10)
location  nchar(10)
date  nchar(10)


建立一个 asp.net 网站工程,在页面中添加 GridView,代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="Teat02.WebForm2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
            <Columns>
                <asp:TemplateField HeaderText="学生id">
                    <ItemTemplate>
                        <%#Eval("id")%>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="姓名">
                    <ItemTemplate>
                        <%#Eval("name")%>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="住址">
                    <ItemTemplate>
                        <%#Eval("location")%>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="入学时间">
                    <ItemTemplate>
                        <%#Eval("date")%>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </div>
    </form>
</body>
</html>

界面如图:



GridView 要绑定的字段和 Student 的字段一样,在这里我们利用 GridView 原有的功能,设定 EmptyDataText 属性,当数据为空是显示“ 数据为空 ”,如果没有设定 EmptyDataText 属性,当绑定的记录为空时,GridView 将不在页面显示。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

namespace Teat02
{
    public partial class WebForm2 : System.Web.UI.Page
    {
        private SqlDataReader sdr = null;
        DataTable dt = new DataTable();
        protected void Page_Load(object sender, EventArgs e)
        {
            string connStr = "server=wlm-PC;database=Test01;uid=sa;pwd=123456";
            SqlConnection conn = new SqlConnection(connStr);
            conn.Open();
            SqlCommand sqlc = new SqlCommand("select * from Student", conn);
            sdr = sqlc.ExecuteReader();
            dt.Load(sdr);
            getDataBind();
        }

        private void getDataBind()
        {
            this.GridView1.DataSource = dt;
            this.GridView1.DataBind();
        }
    }
}

显示的结果:



增加空行来显示 GridView ,我们知道只要 GridView 绑定的 DataTable 有一行记录,GridView 就会显示表头,所以当 DataTable 为空时我们增加一个空行从而显示表头。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

namespace Teat02
{
    public partial class WebForm2 : System.Web.UI.Page
    {
        private SqlDataReader sdr = null;
        DataTable dt = new DataTable();
        protected void Page_Load(object sender, EventArgs e)
        {
            string connStr = "server=wlm-PC;database=Test01;uid=sa;pwd=123456";
            SqlConnection conn = new SqlConnection(connStr);
            conn.Open();
            SqlCommand sqlc = new SqlCommand("select * from Student", conn);
            sdr = sqlc.ExecuteReader();
            dt.Load(sdr);
            getDataBind();

        }

        private void getDataBind()
        {
            if (dt.Rows.Count == 0)
            {
                dt.Rows.Add(dt.NewRow());
            }
            this.GridView1.DataSource = dt;
            this.GridView1.DataBind();
            int colnumcount = dt.Columns.Count;
            GridView1.Rows[0].Cells.Clear();
            GridView1.Rows[0].Cells.Add(new TableCell());
            GridView1.Rows[0].Cells[0].ColumnSpan = colnumcount;
            GridView1.Rows[0].Cells[0].Text = "没有相关记录";
            GridView1.Rows[0].Cells[0].Style.Add("color", "red");
        }
    }
}

显示结果:




原文链接:http://blog.csdn.net/wulingmin21/article/details/7274540
加载中
返回顶部
顶部