2013-03-13 3 views
1

Я развернула ASP.NET Dynamic Data Site здесь: https://ess.orthman.com/PhoneListWeb/ASP.NET Dynamic Data Site: Force Первая колонка будет алфавитный

Столбцы можно алфавитный, нажав на название столбца, но как я могу установить сайт для автоматического алфавита в первом столбце?

+0

Я еще ничего не пробовал. Я даже не знаю, с чего начать. Я предполагаю, что это где-то в динамической папке данных либо в шаблонах List, Details, Edit или Insert. Но я не мог найти ничего похожего. – CryptoJones

+0

Каковы данные для первого столбца? – Melanie

+0

Linq to SQL Classes .dbml file – CryptoJones

ответ

5

У вас есть несколько вариантов, в зависимости от какой машине вы хотите бремя заказа.

1. Вы можете создать хранимую процедуру на сервере БД, которая будет SELECT * FROM ... ORDER BY ... и использовать это в вашем .dbml

2. Вы упомянули вы используете Linq для классов SQL, генерируемых из .dbml , поэтому я исхожу из предположения, что вы используете LinqDataSource на ваших страницах .aspx.

Изнутри вашего дизайнера, вы можете выбрать Настройка источника данных на вашем LinqDataSource:

Configure LinqDataSource

Затем вы выбираете контекст из вашего .dbml, и на следующем экране вы имеете возможность заказать по :

Order By option for LinqDataSource

3. Использование 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

+0

Я могу отправить вам файл с заархивированным проектом, если вам нужно. – CryptoJones

+2

@CryptoJones Я добавил еще один вариант после прочтения и создания тестового проекта. Похоже, вы можете выбрать вариант 1 или 3, и этот вариант 2 действительно не применяется в вашем случае. –

2

Первый и простой ответ будет сортировать источники данных
Используя заказ перед получением данных (форма DB) или LINQ сортировать объекты после извлечения их ...

+0

Хорошо, как вы это делаете? – CryptoJones

+0

Вы используете базу данных? если вы используете ADO.Net или фреймворк Eetity или Hibernate? –

1

После связывания данных из DBML Вы могли бы иметь Linq заявление для связывания данных в сетку или список.

Код, похожий на тот же.

В этом ниже примере кода, я просто добавил сортировку на связывание данных

Сортировать по название фирмы ASCENDING

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

Заказ на НАЗВАНИЕ КОМПАНИИ DESCENDING

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

Попробуйте Хоуп это поможет

1

Вы можете использовать DisplayColumnAttribu te для обозначения столбца, который должен использоваться для сортировки. Существует простой и простой способ сортировки, и есть более сложный и мощный подход. Я дам вам обоих.

Простой способ сначала показать пример сортировки объекта. В этом примере столбец PostalCode из таблицы Address (родительская таблица) используется для сортировки адреса.

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 с новыми свойствами стиля сортировки 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.

EDIT:

Если вы хотите, чтобы отсортировать только в первом столбце, вы должны установить SortExpression свойство DynamicField контроля других столбцов в пустой.

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