我已经设置了<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;
……
<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;
……
应该正合你意.webcast上找一下吧.
===================================
说的对,我的就显示
方法2:新建一个空的 DataTable ,NewRow 后绑定,如果有 非绑定列,特殊处理
{
//隐藏修改和删除按钮
}
C#程序员在长沙1 群号:15283069
C#程序员在长沙2 群号:8689365
C#程序员在长沙3 群号:15082848