我已经设置了<EmptyDataTemplate>,可是数据为空时,仍然不能正常显示表头。为此,我在网上找了很多资料,按照其中的方法做了测试程序,在测试程序中,数据为空时是正常的,但是只要迁移到项目中,就不成功,代码如下:……
<asp:GridView ID="GridView1" runat="server" cssselectorclass="PrettyGridView" SkinID="SampleGridView"                                    AllowPaging="True" AllowSorting="True" OnRowDeleting="GridView1_RowDeleting" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"                                    AutoGenerateColumns="False" DataKeyNames="NeEngName" OnDataBound="GridView1_DataBound"                                    DataSourceID="ObjectDataSource1" PageSize="15">                                    <EmptyDataTemplate>
<table cellpadding="0" cellspacing="0" summary="">
<thead>
<tr>                     <th scope="col">中文名</th>
……                     </tr>
</thead>
</EmptyDataTemplate>
<Columns>
<asp:TemplateField HeaderText="中文名">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("NeChsName") %>'></asp:TextBox>
</EditItemTemplate>
……
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("NeChsName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="修改">
<ItemTemplate>
<asp:LinkButton ID="NeSelect" Text="修改" CommandName="Select" Width="40px" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="删除">
<ItemTemplate>
<asp:LinkButton ID="NeDelete" runat="server" CausesValidation="False" CommandName="Delete" Width="40px" Text="删除" OnClientClick="return confirm('确认要删除此行信息吗?')"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerTemplate>
</PagerTemplate>
</asp:GridView>
…………C#代码如下:……
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("NeChsName", typeof(string)));
……
DataRow dr = dt.NewRow();
foreach (Ne n in arrNe)
{
dr = dt.NewRow();
dr[0] = n.NeChsName;
……
dt.Rows.Add(dr);
}
return dt;
……

解决方案 »

  1.   

    datatable增加的列,不要放到一起,要另外重新邦定,不然,你NewRow当然会显示出来
      

  2.   

    苏鹏刚讲了一课,其中就有说到没有数据时,如何显示表头.
    应该正合你意.webcast上找一下吧.
      

  3.   

    看不出什么问题来,你有没有写GridView1.DataBind()
      

  4.   

    dingjian2008(ajax有那么热么) 
    ===================================
    说的对,我的就显示
      

  5.   

    方法1:设置<EmptyDataTemplate>
    方法2:新建一个空的 DataTable ,NewRow 后绑定,如果有 非绑定列,特殊处理
      

  6.   

    刚刚看过了webcast,里面提到的现实表头的方法,我已经试过了,可以显示表头,但是还有一定的问题:我的GridView后面还有修改和删除的模板列,NewRow方法添加了一个新行,前面的数据项都是空的,但是后面的修改和删除却不是空的,这样不符合要求啊!
      

  7.   

    if(DataSet.Table[0].Rows.Count==0)
    {
                   //隐藏修改和删除按钮
    }
      

  8.   

    介绍三个C#技术群:
                     C#程序员在长沙1 群号:15283069
                     C#程序员在长沙2 群号:8689365
                     C#程序员在长沙3 群号:15082848