您的位置:首页 > 其它

当数据源为空时,gridview只显示表头

2010-08-01 23:42 218 查看
今天在做网页时,发现gridview中的数据源为空时,它不显示,于是就想,能不能让它在没有数据源的时候也显示呢?

于是就在网上找资料,找到了很多,但大部分的都写得比较复杂,经过我不懈的努力,终于找到了几条看似比较简单的代码,经过我的修改和验证,效果出来了,现在把这些代码总结一下,一是留给自己的,二是方便其它人。

方法一:通过在CS中写代码来实现

sda.Fill(ds, "titles"); //这里的titles是指表名

DataTable dt = new DataTable();
dt.Columns.Add("title");
dt.Columns.Add("type");
dt.Columns.Add("pub_id");
dt.Columns.Add("price");//title,type,pub_id,price都是列名

if (dt.Rows.Count == 0) //判断表中的行数,如果为0,表示没有找到,即数据源为空
{
dt.Rows.Add(dt.NewRow());//添加一条新的空白行
}

GridView1.DataSource = dt;
GridView1.DataBind();

int columncount = dt.Columns.Count; //有多少列
GridView1.Rows[0].Cells.Clear(); //给第一行的每列清零
GridView1.Rows[0].Cells.Add(new TableCell());
GridView1.Rows[0].Cells[0].ColumnSpan = columncount;//跨列数
GridView1.Rows[0].Cells[0].Text = "No Record Found!";
GridView1.Rows[0].Cells[0].Style.Add("text-align", "center");

方法二:在源中表示

方法很简单:就是先运行有数据的gridview,然后查看编译的页面的“查看源文件” 把里面生成的table的样式抠出来,放到 <EmptyDataTemplate> </EmptyDataTemplate>。

这样还没完,还有二步:第一步:在<table></table>中,保留第一二行,其它的行都删除。第一行的内容不变,第二行合并成一个单元格,并在此单元格里写上“没有找到记录”这样的信息。位置随你,本人喜欢让其居中

第二步:回到CS文件,把原来能查到数据的sql语句改一下,改成不能查找数据的sql语句。

方法三:如果不用EmptyDataTemplate模板,可以设置GridView 的EmptyDataText属性,这样只显示一句话和一个边框

本人觉得不是很好看。虽然简单,不太喜欢!

此时,大功告成!

附:第二种方法其实是以表格的方式显示没有数据源时的信息,从表面上看去像显示了gridview的信息,其实不是。这就要求大家将表格的样式最好设置得和gridview的样式一样,让外人看不出破绽。呵呵!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: