SortExpression 在 ASP.NET 中不起作用 如果 Header 文本通过 VB 代码动态传递

SortExpression not working in ASP.NET If Header Text is passed dynamically through VB code

我在第 6 列使用以下 aspx 代码(此列号在 .vb 代码中有参考,代码在下面 aspx 代码中提到):

<asp:BoundField ControlStyle-CssClass="dbody" DataField="order_date" HeaderText="Order Date" SortExpression="order_date">                            
                                <HeaderStyle HorizontalAlign="Left" ForeColor="White" />
                                <ItemStyle HorizontalAlign="Left" />
                            </asp:BoundField>

在 aspx.vb 页面上,我使用以下代码动态传递 Header 文本:

 If iOrderType = 4 Then
                        gvOrders.HeaderRow.Cells(6).Text = "DVN date" 
                    ElseIf iOrderType = 11 Then
                        gvOrders.HeaderRow.Cells(6).Text = "Lab Order Date" 
                    Else
                        gvOrders.HeaderRow.Cells(6).Text = "Order Date" 
                    End If

现在 运行 应用程序后,我的第六列无法用作排序表达式 link。同样在 asp 网格视图中,标签 AllowSorting 为“true”,gvOrder 为网格 ID。

对于启用排序的 header 单元格,DataControlField 将向 TableCell 添加一个 LinkButton,并相应地设置其属性。

当您设置 TableCellText 属性 时,它会删除所有由 DataControlField 创建的控件。这包括用于对单元格进行排序的 LinkButton

您需要改为更改 LinkButton 的文本。

Dim text As String
If iOrderType = 4 Then
    text = "DVN date" 
ElseIf iOrderType = 11 Then
    text = "Lab Order Date" 
Else
    text = "Order Date" 
End If

Dim cell As TableCell = gvOrders.HeaderRow.Cells(6)
Dim button As IButtonControl = If(cell.HasControls(), TryCast(cell.Controls(0), IButtonControl), Nothing)
If button Is Nothing Then
    cell.Text = text
Else
    button.Text = text
End If