gridview绑定数据源是一个动态的dataview
在gridview上设置empty模版为,“无数据!”。
但是dataview没有数据的时候,为什么不显示empty的内容?空数据模版:
<EmptyDataTemplate>
    <asp:Label ID="Label1" runat="server" Text="请先添加培训课程表!"></asp:Label>
</EmptyDataTemplate>绑定数据源:
        gdveval.DataSource = CreatDataSource();
        gdveval.DataBind();
创建数据源:
    protected DataView CreatDataSource()
    {
        DataTable dt = new DataTable();
        //创建列
        dt.Columns.Add(new DataColumn("id", typeof(String)));
        dt.Columns.Add(new DataColumn("时间", typeof(String)));
        dt.Columns.Add(new DataColumn("地点", typeof(String)));
        dt.Columns.Add(new DataColumn("人物", typeof(String)));
        for (int i = 0; i < TempletName().Tables[0].Rows.Count; i++)
        {
            dt.Columns.Add(new DataColumn(TempletName().Tables[0].Rows[i]["templet"].ToString()));
        }
        //创建行
        for (int i = 0; i < CourseInfo().Tables[0].Rows.Count; i++)
        {
            DataRow dr = dt.NewRow();
            dr[0] = CourseInfo().Tables[0].Rows[i]["courseid"].ToString();
            dr[1] = CourseInfo().Tables[0].Rows[i]["coursetime"].ToString();
            dr[2] = CourseInfo().Tables[0].Rows[i]["coursetitle"].ToString();
            dr[3] = CourseInfo().Tables[0].Rows[i]["docentname"].ToString();
            dt.Rows.Add(dr);
        }
        DataView dv = new DataView(dt);
        return dv;
    }

解决方案 »

  1.   

    如何判断datasource是否空呢?
      

  2.   

    gdveval.DataSource==null的值为false
    CreatDataSource().Table.Rows.Count的值为0
    但是不显示empty模版的内容。怎么回事呢?
      

  3.   

    根本不用判断gdveval.DataSource==null<EmptyDataTemplate>... </EmptyDataTemplate> 中数据的显示,  
    是在数据绑定时,数据的Count为0时才显示!!
      

  4.   

    你的CreatDataSource(),至少会有个表头吧(id,时间,地点...)
    所以gdveval.DataSource绝对不会为空
    你可以判断TempletName().Tables[0].Rows.Count>0的时候,再加载表头额外的话:
    你都自己拼table了,还有gridview干什么,直接自己拼html table tr td代码不就行了
    无数据的时候,显示某个label,提示无数据
      

  5.   

    不用你去判断 gv为空的时候就会显示空模板里的内容:
    <EmptyDataTemplate>
      <asp:Label ID="Label1" runat="server" Text="请先添加培训课程表!"></asp:Label>
    </EmptyDataTemplate>
      

  6.   

    按道理应该显示empty模板内容的,俺也比较郁闷,不明白,主要没亲身经历,要不这样吧,楼主把控件先连到数据库里一张空表试试看,如果能显示empty内容,那只能怪你CreatDataSource()有问题~
      

  7.   

    为什么不返回DataTable, 而要返回DataView?
      

  8.   

    DataView dv = new DataView(dt);
      if (dv.Count > 0)
      {
      GridView1.DataSource = dv;
      GridView1.DataBind();
      }
      else
      {}
    EmptyDataTemplate中加入表格,填写表头