七月网

gridview绑定(gridview绑定数据源)

七月网1440

一、如何让gridview在没有数据时显示表头

如何让gridview在没有数据时显示表头

gridview绑定(gridview绑定数据源)

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

为了让GridView显示数据,在数据库中建立表temple,其字段如下:

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

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"%>

<!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">

<title>GridView绑定记录为空显示表头测试</title>

<form id="form1" runat="server">

<div style="font-size:13px;">

<asp:GridView ID="GridViewEmptyDataTest" runat="server" AutoGenerateColumns="False" EmptyDataText="Data Is Empty" BackColor="White" BorderColor="LightGray" BorderStyle="Double" BorderWidth="3px"

CellPadding="4" GridLines="Horizontal" Width="500px">

<asp:BoundField DataField="temple_id" HeaderText="temple_id" Visible="False">

<asp:BoundField DataField="temple_name" HeaderText="名称">

<ItemStyle BorderColor="LightGray" BorderStyle="Double" BorderWidth="1px" Width="100px"/>

<asp:BoundField DataField="location" HeaderText="地址">

<ItemStyle BorderColor="LightGray" BorderStyle="Double" BorderWidth="1px" Width="300px"/>

<asp:BoundField DataField="build_date" HeaderText="建设时间">

<ItemStyle BorderColor="LightGray" BorderStyle="Double" BorderWidth="1px" Width="100px"/>

<FooterStyle BackColor="White" ForeColor="#333333"/>

<RowStyle BackColor="White" ForeColor="#333333"/>

<SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White"/>

<PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center"/>

<HeaderStyle BackColor="CornflowerBlue" Font-Bold="True" ForeColor="White"/>

<asp:Button ID="ButtonHasDataBind" runat="server" Text="有数据绑定" Width="109px" OnClick="ButtonHasDataBind_Click"/>

<asp:Button ID="ButtonQueryEmptyBind" runat="server" Text="查询结果为空绑定" Width="142px" OnClick="ButtonQueryEmptyBind_Click"/>

<asp:Button ID="ButtonConstructTableBind" runat="server" Text="构造空的DataTable绑定" Width="164px" OnClick="ButtonConstructTableBind_Click"/>

<asp:Button ID="ButtonNormalBind" runat="server" Text="普通空数据绑定" Width="127px" OnClick="ButtonNormalBind_Click"/></div>

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

二、如何让GridView控件在绑定的数据源没有数据时也显示标题

以前的DataGrid在绑定数据源的时候,只要绑定的数据源不是null,而是带有表结构的,都可以显示出列表的标题。而GridView中却不是如此,就算数据源有表结构,只要没有行记录,就无法显示标题。

我用了如下几种方法来显示,供大家参考一下:

1.使用最简单的,当返回的数据为null时,没有表结构,那么先获取对应的表结构,可以从数据库中获取,也可以临时组合,如:

DataTable dt= new DataTable("column");

dt.Columns.Add(ID, typeof(System.Int32));

dt.Columns.Add(Name, typeof(System.String));

如果返回的数据源有表结构,只是没有行记录,就不用做上面这步了。

然后使用DataRow dr= dt.NewRow();

然后再绑定到GridView,这样就可以显示标题了。

这种方法简单,但是有些问题,如果列表中有其他控件,如Select命令,那么显示出来空行连Select也显示出来了,这样看上去会让用户误认为是有一条记录。当然,可以在RowDataBound中判断一下状态,是否清除掉所有控件。

2.使用EmptyDataText属性来提示用户没有记录,但是这样无法显示标题。

当绑定到 GridView控件的数据源不包含任何记录时,该控件中显示空数据行。使用 EmptyDataText属性指定将在空数据行中显示的文本。

3.使用EmptyDataTemplate属性。里面可以包含控件和html标记。

如果同时设置了 EmptyDataText和 EmptyDataTemplate属性,则 EmptyDataTemplate属性优先。

4.CreateChildControls(IEnumerable, bool)方法:

此方法是根据数据源和相关的设置来创建需要显示的控件,主要是一个表格,此返回创建的控件数,

如果数据源中没有数据,GridView将根据 EmptyDataTemplate和 EmptyDataText两个属性来显示

信息,如果这两个属性都没有设置,GridView将不显示任务的内容。

在 DataGrid中,如果数据源没有数据,将也会显示一个表头,GridView不显示表头了,对于有些

如果需要在没有数据的时候也要显示表示,可以重写此方法,在此方法,通过 CreateColumns方法

获取到需要显示的列,在调用 CreateRow方法创建一行,在调用 IntializeRow方法来初始化创建

的行,最后在把行添加到表格里,这里需要说明的一点是,如果 GridView没有显示任何的东西,

那么它的 Controls里是没有一个控件的,我们需要自己创建一个 Table对象,并添加到 Controls集合中。

三、C#中datagridview手动绑定数据后怎么编辑列

在查询数据库,返回结果集时更改查询语句,直接返回中文名称的表。例如:select wordID as'单词ID',wordEnglish as'英文单词', wordChinese as'中文解释' from Word

这样的话绑定数据到DataGradView控件时仅仅使用DataGradView控件的一个属性datagridview1.DataSource足够了!!!(如果是WEB程序后面加datagridview1.DataBind();)

查询的时候最好把顺序排好,这样界面代码的复杂程度大大减少。

根据你的补充,你是为显示了所有列而烦恼吧。

这样搞定: this.datagridview1.Columns[1].Visible= false;

或者这样:this.datagridview1.Columns["userID"].Visible= false;

不想让哪一列显示就更改哪一列的Visible属性值为false即可!(列的标示可以用下标,也可以用数据库查出数据时的列名)

另外你说HeaderText属性,WinForm里的DataGradView当然有这个属性了,它是用来设置列头文字的,你可以设置某列的列头文字为英文,也可以设置成中文,示例如下:

this.datagridview1.Columns[1].HeaderText="UserName";

this.datagridview1.Columns[1].HeaderText="用户名字";

这样解释你该清清楚楚,明明白白了吧~

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!