我在这里部署了一个 ASP.NET 动态数据站点:https ://ess.orthman.com/PhoneListWeb/
列可以通过单击列名称按字母顺序排列,但是如何设置站点以自动按字母顺序排列第一列?
我在这里部署了一个 ASP.NET 动态数据站点:https ://ess.orthman.com/PhoneListWeb/
列可以通过单击列名称按字母顺序排列,但是如何设置站点以自动按字母顺序排列第一列?
您有许多可用的选项,具体取决于您想要订购的机器。
1.您可以在数据库服务器上创建一个存储过程,该存储过程将SELECT * FROM ... ORDER BY ...
在您的 .dbml 中使用
2.您提到您正在使用从 .dbml 生成的 Linq to SQL 类,所以我假设您LinqDataSource
在 .aspx 页面中使用。
在您的设计器中,您可以选择配置数据源LinqDataSource
:
然后从 .dbml 中选择上下文,在下一个屏幕上,您可以选择 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);
}
}
第一个也是简单的答案是
在获取数据(表单数据库)之前使用 order by 对数据源进行排序,或者在获取对象之后使用 linq 排序对象......
从 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;
试试这个希望它会有所帮助
您可以使用 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。
如果您正在使用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="" />