gridviewheader自定义问题
本文关键字:问题 自定义 gridviewheader | 更新日期: 2023-09-27 18:12:17
如果我们向gridview
添加客户标题,它会添加额外的行吗?
目前我有一个gridview
与four
列,当我添加一个自定义标题gridview
与five
行。
我的代码是这样的…
<asp:TemplateField HeaderText="" ItemStyle-Width="4%" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
<HeaderTemplate>
<asp:DropDownList ID="Select" runat="server">
<asp:ListItem>Country</asp:ListItem>
<asp:ListItem>Region</asp:ListItem>
<asp:ListItem>Title</asp:ListItem>
</asp:DropDownList>
</HeaderTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="" ItemStyle-Width="4%" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:HiddenField ID="Id" Value='<%#Eval("id")%>' runat="server" />
<asp:Literal ID="ltrImage" runat="server"></asp:Literal>
</ItemTemplate>
</asp:TemplateField>
和其他三个TemplateFields
…
以这种方式添加标题有问题吗?有没有其他的方法来添加客户标题没有这个问题?我想要的输出应该如下所示
Search Result Search By (Dropdownlist)
Data column1 Data column2 Data column3 Data column4
我现在得到的是
Sort By (Dropdownlist)
Data column1 Data column2 Data column3 Data column4
有谁能帮我一下吗?提前感谢
您刚刚为gridview添加了另一个具有自定义标题的列。如果您想自定义第一列的标题,只需自定义第一个模板字段的标题:
<asp:TemplateField HeaderText="" ItemStyle-Width="4%" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
<HeaderTemplate>
<asp:DropDownList ID="Select" runat="server">
<asp:ListItem>Country</asp:ListItem>
<asp:ListItem>Region</asp:ListItem>
<asp:ListItem>Title</asp:ListItem>
</asp:DropDownList>
</HeaderTemplate>
<ItemTemplate>
<asp:HiddenField ID="Id" Value='<%#Eval("id")%>' runat="server" />
<asp:Literal ID="ltrImage" runat="server"></asp:Literal>
</ItemTemplate>
</asp:TemplateField>
如果这个下拉列表太大,或者如果你想在标题中添加一些额外的文本,你可以为其他TemplateFields创建HeaderTemplate,合并一些列的标题后面的代码(例如"合并"两个头,gridView的Id是gridView1
):
protected void gridView1_PreRender(object sender, EventArgs e)
{
int indexOfColumnToSpan = 0;
int indexOfColumnToRemoveHeader = 1;
gridView1.HeaderRow.Cells[indexOfColumnToSpan].ColumnSpan = 2;
gridView1.HeaderRow.Cells.RemoveAt(indexOfColumnToRemoveHeader);
}
实际上并没有添加标题行,而是添加了标题列。这基本上只是另一个列与更多的控件..
为什么你不把你的DropDownList放在GridView之前,然后你可以写一些代码来处理DropDownList_SelectedIndexChanged事件来排序数据?
我已经实现了这一点,没有使用GridView中的过滤器。然后你可以分别处理事件,并相应地填充GridView。
您实际添加的是一列,而不是一行。这就是为什么你会得到那个结果。
希望这对你有帮助!