2013-03-13 17 views
1

我已经在这里部署了ASP.NET动态数据网站:https://ess.orthman.com/PhoneListWeb/ASP.NET动态数据网站:强制首列按字母顺序排列被

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

+0

我还没有尝试过任何东西。我甚至不知道从哪里开始。我假设它位于列表,详细信息,编辑或插入模板上的动态数据文件夹中。但我找不到任何看起来很接近的东西。 – CryptoJones 2013-03-13 18:25:41

+0

第一列的数据如何拉入? – Melanie 2013-03-19 19:20:01

+0

Linq to SQL类.dbml文件 – CryptoJones 2013-03-19 19:29:44

回答

5

你有许多可供选择,这取决于你想要订购哪台机器。

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

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

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

Configure LinqDataSource

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

Order By option for LinqDataSource

使用Dynamic Data Web Site你没有的优势设计时的特定表格结构。正因为如此,您需要创建一个将在运行时发生的排序。您可以编辑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); 
    } 
} 
+0

当你说,“从你的设计师中,你可以选择在你的LinqDataSource上配置数据源:”项目中的哪个页面是? – CryptoJones 2013-03-19 20:21:28

+0

如果你需要我可以给你一个压缩的项目文件。 – CryptoJones 2013-03-19 20:25:53

+2

@CryptoJones在阅读和创建测试项目后,我添加了另一个选项。看起来你可以选择选项1或3,而选项2并不适用于你的情况。 – 2013-03-19 20:34:31

2

首先,简单的答案将通过获取它们之后获取数据(订单DB)或LINQ排序对象之前被排序数据源
使用顺序...

+0

好的,你是如何做到这一点的? – CryptoJones 2013-03-19 19:35:51

+0

您使用的是数据库吗?如果是的话,你使用ADO.Net或Eetity framwork或Hibernate? – 2013-03-19 20:37:17

1

将数据绑定从DBML 后,你可能有一个LINQ语句将数据绑定到一个图标或列表。

代码类似于相同的东西。

在这下面的示例代码,我刚才说对公司名称倒序

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

试试这个希望通过公司姓名升序

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

秩序结合数据

顺序排序它会帮助

1

您可以使用DisplayColumnAttribu te指定应该用于分类的列。有一种简单易行的排序方法,有一种更复杂和更强大的方法。我会给你们两个。

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

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

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

} 

如果您需要进行排序比较复杂然后尝试从C#位博客这种更强大的方法:Setting the initial sort order

此链接记录了DisplayColumnAttribute

1

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

.ASPX

示例:

实施例的 .CSS
<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> 

/*#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

编辑:

如果您想仅通过第一列进行排序,你应该设置DynamicField控制的其他列空白的SortExpression财产。

<asp:DynamicField DataField="ListCity" HeaderText="City" SortExpression="" />