关于GridView的问题~

(1)当数据源为空时,GridView是没有显示出来的,但如果这时我们要把它显示出来时(如现在我的最后一行是要新增加行的,但如果数据源为空时,我们并没有显示出来表,我们就没有办法来新增了),可以先把它增加一个空行~

方法来自:http://hi.baidu.com/vb98/blog/item/68f9cf7b74c807e50bd1875b.html

方法一:通过在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的样式一样,让外人看不出破绽。呵呵!

posted @ 2012-05-05 17:32  宁静致远--Ada  阅读(247)  评论(0编辑  收藏  举报