-->

ASP.NET动态数据网站:强制第一列按字母顺序排列被(ASP.NET Dynamic Data S

2019-10-17 20:09发布

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

列可以通过点击列名按字母顺序排列,但我怎么可以设置站点自动按字母顺序排列的是第一列?

Answer 1:

你可以有多种选择,这取决于你想要订购的负担的设备。

1.您可以将DB服务器,这将在创建存储过程SELECT * FROM ... ORDER BY ...和使用,在您的.dbml

2.你提到你是使用LINQ to从的.dbml生成的SQL类,所以我会假设你正在使用LinqDataSource在.aspx页面。

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

然后,你从你的选择的.dbml您的上下文,并在下一个屏幕上,你必须为了通过选项:

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);
    }
}


Answer 2:

第一,简单的答案将整理您的数据源
通过获取他们后获取数据(订单DB)或LINQ排序对象之前使用顺序...



Answer 3:

将数据绑定从DBML你可能有一个LINQ语句将数据绑定到网格或列表之后。

代码类似的东西来一样。

在这下面的示例代码,我刚才说的排序上绑定数据

按公司名称升序排列

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;

试试这个希望这将有助于



Answer 4:

您可以使用DisplayColumnAttribute来指定要用于排序的列。 有一个简单易用的方式进行排序,并有一个更加复杂和强大的方法。 我都将送给你。

最简单的方法第一,显示出如何排序实体的例子。 在这个例子中从地址表(父表)的POSTALCODE列用于排序的地址。

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

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

}

如果您需要进行排序比较复杂然后尝试从C#位博客这种更强大的方法: 设置初始排序顺序

此链接记录了DisplayColumnAttribute 。



Answer 5:

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

的例子.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="" />


文章来源: ASP.NET Dynamic Data Site: Force First Column to be Alphabetized