Gridview标头定制问题

时间:2011-10-24 11:54:53

标签: c# asp.net gridview

如果我们向gridview添加客户标头,是否会添加额外的行?

目前,我有gridviewfour列,当我添加一个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

如果有想法,有人可以提供帮助吗? 提前致谢

3 个答案:

答案 0 :(得分:1)

您刚刚在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>

如果此下拉列表太大或者您想在标题中添加一些其他文本,则可以始终为其他TemplateField创建HeaderTemplate,以合并后面代码中的某些列标题(例如,“合并”两个第一个标题,Id gridView的结果是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);
}

答案 1 :(得分:0)

好吧,你实际上没有添加标题行,而是标题列..这基本上只是另一个包含更多控件的列..

为什么不将DropDownList放在GridView之前,然后你可以编写一些代码来处理DropDownList_SelectedIndexChanged事件来对数据进行排序?

答案 2 :(得分:0)

我在不使用GridView中的过滤器的情况下实现了这一点。然后,您可以单独处理事件,并相应地填充GridView。

您实际添加的是列,而不是行。这就是你得到这个结果的原因。

希望这有帮助!

相关问题