1

我在这里部署了一个 ASP.NET 动态数据站点:https ://ess.orthman.com/PhoneListWeb/

列可以通过单击列名称按字母顺序排列,但是如何设置站点以自动按字母顺序排列第一列?

4

5 回答 5

5

您有许多可用的选项,具体取决于您想要订购的机器。

1.您可以在数据库服务器上创建一个存储过程,该存储过程将SELECT * FROM ... ORDER BY ...在您的 .dbml 中使用

2.您提到您正在使用从 .dbml 生成的 Linq to SQL 类,所以我假设您LinqDataSource在 .aspx 页面中使用。

在您的设计器中,您可以选择配置数据源LinqDataSource

配置 LinqDataSource

然后从 .dbml 中选择上下文,在下一个屏幕上,您可以选择 Order By:

LinqDataSource 的 Order By 选项

3.使用动态数据网站,您在设计时没有特定表结构的优势。因此,您需要创建一个将在运行时发生的排序。您可以编辑您的DynamicData\PageTemplates\List.aspx.cs以包括以下内容:

protected void Page_Load(object sender, EventArgs e)
{
    Title = table.DisplayName;

    // Disable various options if the table is readonly
    if (table.IsReadOnly)
    {
        GridView1.Columns[0].Visible = false;
        InsertHyperLink.Visible = false;
        GridView1.EnablePersistedSelection = false;
    }

    // Add our sort to the first data column.
    if (!Page.IsPostBack)
    {
        GridView1.Sort(table.Columns[0].Name, SortDirection.Ascending);
    }
}
于 2013-03-19T20:01:55.387 回答
2

第一个也是简单的答案是
在获取数据(表单数据库)之前使用 order by 对数据源进行排序,或者在获取对象之后使用 linq 排序对象......

于 2013-03-19T19:26:51.580 回答
1

从 dbml 绑定数据之后 您可能有一个 linq 语句来将数据绑定到 Grid 或 List。

编写类似于 Same 的代码。

在下面的示例代码中,我刚刚添加了绑定数据的排序

按公司名称升序排序

var Company = from Company in _c.Company_Name
             orderby _c.Company_Name 
             select Company;

按公司名称降序排序

var Company = from Company in _c.Company_Name
             orderby _c.Company_Name descending
             select Company;

试试这个希望它会有所帮助

于 2013-03-26T13:03:56.830 回答
1

您可以使用 DisplayColumnAttribute 来指定应该用于排序的列。有一种简单易行的排序方法,还有一种更复杂、更强大的方法。我会给你两个。

首先是简单的方法,展示如何对实体进行排序的示例。在此示例中,地址表(父表)中的 PostalCode 列用于对地址进行排序。

using System;
using System.Web.DynamicData;
using System.ComponentModel.DataAnnotations;
using System.Globalization;

[DisplayColumn("City", "PostalCode", false)]
public partial class Address
{

}

如果您的排序需求更复杂,请尝试 C# Bits 博客中的这种更强大的方法:设置初始排序顺序

此链接记录了DisplayColumnAttribute

于 2013-03-26T18:54:26.553 回答
1

如果您正在使用ASP.NET 4.0,您可以考虑AllowSorting = true带有新的排序相关样式属性SortedAscendingHeaderStyle和其他的 GridView。

示例.ASPX

<asp:GridView 
    ID="gvOffices" 
    runat="server" 
    DataSourceID="GridDataSource"
    AllowPaging="true" 
    AllowSorting="true" 
    PageSize="10" 
    CssClass="listtable" 
    AutoGenerateColumns="false"
    EnablePersistedSelection="true"
    OnSelectedIndexChanged="OnFilterSelectedIndexChanged"
    SortedAscendingHeaderStyle-CssClass="sortasc-header" 
    SortedDescendingHeaderStyle-CssClass="sortdesc-header">
</asp:GridView>

示例.CSS

/*#region Table Header Sort Image */
.sortasc-header a {
    background: url(Images/arrowup.gif) right center no-repeat;
}

.sortdesc-header a {
    background: url(Images/arrowdown.gif) right center no-repeat;
}
/*#endregion Table Header Sort Image */

AllowSorting提示 GridView 使用LinkButton控件呈现其标题行,当单击这些控件时,会导致回发并启动排序过程。新属性允许根据当前顺序定义列标题的视觉外观。

您可以在MSDN上找到更多信息。

编辑:

如果只想按第一列排序,则应将其他列SortExpression的控制属性设置为空白。DynamicField

<asp:DynamicField DataField="ListCity" HeaderText="City" SortExpression="" />
于 2013-04-19T13:56:05.730 回答