1

我的网格视图中有 2 个标题。我在事件后面的代码中插入第二个标题,RowCreated该事件将插入到<asp:BoundField>行上方。我已经SortExpression为每个BoundField. 当我运行应用程序时,SorExpression将在每个BoundField未插入的标头上创建超链接(这在逻辑上是正确的)。但我想对插入的标题行进行排序表达式。我怎样才能做到这一点?

下面我正在解释我所做的步骤

ASPX

<asp:GridView ID="gvInitiavtives" runat="server" Width="100%" CssClass="Grid" 
       RowStyle-Width="30px" AutoGenerateColumns="false" HeaderStyle-CssClass="GridHeader" RowStyle-CssClass="GridItem" AlternatingRowStyle-CssClass="GridAltItem"  DataKeyNames="InitiativeIdx"  >
      <Columns>
      <asp:BoundField DataField="BusinessUnit" HeaderText="" HeaderStyle-Wrap="false" HeaderStyle-HorizontalAlign="NotSet" SortExpression='BusinessUnit' />
      <asp:BoundField DataField="IFunction" HeaderText="" HeaderStyle-Wrap="false" HeaderStyle-HorizontalAlign="NotSet" SortExpression='IFunction'/>
      <asp:BoundField DataField="SubFunction" HeaderText="" HeaderStyle-Wrap="false" HeaderStyle-HorizontalAlign="NotSet" SortExpression='SubFunction' />         
    .....

代码背后

  Private Sub gvInitiavtives_RowCreated(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvInitiavtives.RowCreated
        If e.Row.RowType = DataControlRowType.Header Then
            Dim HeaderGrid As GridView = DirectCast(sender, GridView)
            Dim HeaderGridRow As New GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert)

            Dim HeaderCell As New TableHeaderCell()
            HeaderCell.Text = "BU"
            HeaderGridRow.Cells.Add(HeaderCell)

            HeaderCell = New TableHeaderCell()
            HeaderCell.Text = "Function"

            HeaderGridRow.Cells.Add(HeaderCell)

            HeaderCell = New TableHeaderCell()
            HeaderCell.Text = "Sub - Function"
            HeaderGridRow.Cells.Add(HeaderCell)
    ....
    .... 
       gvInitiavtives.Controls(0).Controls.AddAt(0, HeaderGridRow)

    End If
End Sub

浏览器

在此处输入图像描述

HTML

   <table class="Grid" cellspacing="0" rules="all" border="1" id="Body_gvInitiavtives" style="width:100%;border-collapse:collapse;">
            <tr class="GridHeader">
                <th>BU</th><th>Function</th><th>Sub - Function</th><th>Initiative Name</th><th>Location</th><th>Cost Center</th><th colspan="2">Estimated Cost Savings</th><th colspan="2">Estimated Personnel Savings</th>
            </tr>
<tr class="GridHeader">
            <th scope="col" style="white-space:nowrap;"><a href="javascript:__doPostBack(&#39;ctl00$Body$gvInitiavtives&#39;,&#39;Sort$BusinessUnit&#39;)"></a></th><th scope="col" style="white-space:nowrap;"><a href="javascript:__doPostBack(&#39;ctl00$Body$gvInitiavtives&#39;,&#39;Sort$IFunction&#39;)"></a></th><th scope="col" style="white-space:nowrap;"><a href="javascript:__doPostBack(&#39;ctl00$Body$gvInitiavtives&#39;,&#39;Sort$SubFunction&#39;)"></a></th><th scope="col">&nbsp;</th><th scope="col" style="white-space:nowrap;">&nbsp;</th><th scope="col" style="white-space:nowrap;">&nbsp;</th><th scope="col" style="white-space:nowrap;">Low</th><th scope="col" style="white-space:nowrap;">High</th><th scope="col" style="white-space:nowrap;">Low</th><th scope="col" style="white-space:nowrap;">High</th>
    </tr>
    <tr class="GridItem" style="width:30px;">
   <td>UNKNOWN</td><td>UNKNOWN</td><td>UNKNOWN</td><td>

帮助将不胜感激。

4

1 回答 1

0

You can add sort expression on header row each column, in which column you not need for sorting then make sort expression empty like

SortExpression="" - in which column you not want to apply sorting

于 2013-04-06T07:08:00.203 回答