gridviewheader自定义问题

本文关键字:问题 自定义 gridviewheader | 更新日期: 2023-09-27 18:12:17

如果我们向gridview添加客户标题,它会添加额外的行吗?

目前我有一个gridviewfour列,当我添加一个自定义标题gridviewfive行。

我的代码是这样的…

<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

有谁能帮我一下吗?提前感谢

gridviewheader自定义问题

您刚刚为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。

您实际添加的是一列,而不是一行。这就是为什么你会得到那个结果。

希望这对你有帮助!