Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Порядок столбцов в GridView при привязке данных
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть GridView, привязанный к ObjectDataSource. Данные последнего беруться из класса типа: public class User { private string login; private string password; // Properties public string Login { get { return login; } set { login = value; } } public string Password { get { return password; } set { password = value; } } } } Столбцы GridView генеряться из пропертей класса. Вопрос: как я могу задать порядок столбцов в GridView? А то они всегда генеряться не в том порядке, который нужен. Всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 18:07 |
|
||
|
Порядок столбцов в GridView при привязке данных
|
|||
|---|---|---|---|
|
#18+
R>Столбцы GridView генеряться из пропертей класса. R>Вопрос: как я могу задать порядок столбцов в GridView? А то они всегда генеряться не в том порядке, который нужен. единственное что могу предложить — оборачивать класс User в некую упорядоченную структуру. а вообще, не понятно, почему хочется использовать Autogenerated columns по моему в чистом виде совершенно бесполезная вешь. она может быть востребована только в двух сценариях: 1. есть большой кусок кода который готовит полностью правильные данные для генерации колонок, т.е и их порядок, и caption's и т.д. но даже в этом случае далеко не все свойства получится заполнить автоматически по метаданным. например всякие визуальные свойства, управление сортировками и т.д. т.е. более предпочтительнее все равно по неким подготовленным метаданным, идти и создавать колонки динамически. 2. второй сценарий более гипотетический, ибо не поддерживается стандартно ( но можно реализовать/*по крайней мере можно было в DataGrid из 1.1*/ расширив стандартные контролы ). идея такова: — грид при включенном AutoGenerateColumns вызывает событие OnAutogeneratedColumns которое возвращает массив колонок. создает колонки опять же наш код.... << RSDN@Home 1.1.4 stable SR1 rev. 568>> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 19:37 |
|
||
|
Порядок столбцов в GridView при привязке данных
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ, mogadanez, Вы писали: M>единственное что могу предложить — оборачивать класс User в некую упорядоченную структуру. Что значит структура ? struct ? А для нее, что, сгенерированные столбцы будут в неком заданном порядке? Наверное нет... :( M>а вообще, не понятно, почему хочется использовать Autogenerated columns Проблема в том, что класс (напр. User), для которго генеряться колонки, заранее не известен. Т. е. мы можем подсовывать различные классы с различными наборами пропертей. На этапе разработки эти классы не известны. Мне бы подошло, располагать эти колонки, например, по алфавиту тайтлов. Но как-то без reflection не получается. Придется пользоваться им :)) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2006, 19:27 |
|
||
|
Порядок столбцов в GridView при привязке данных
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, rksf, Вы писали: R>Спасибо за ответ, mogadanez, Вы писали: M>>единственное что могу предложить — оборачивать класс User в некую упорядоченную структуру. R>Что значит структура ? struct ? А для нее, что, сгенерированные столбцы будут в неком заданном порядке? Наверное нет... :( нет, Array, Diactonary, Table.... R>Проблема в том, что класс (напр. User), для которго генеряться колонки, заранее не известен. Т. е. мы можем подсовывать различные классы с различными наборами пропертей. На этапе разработки эти классы не известны. R>Мне бы подошло, располагать эти колонки, например, по алфавиту тайтлов. R>Но как-то без reflection не получается. Придется пользоваться им :)) . можно ввести атрибут для типа с перечислением порядка колонок. public class ColumnOrderAttribute : Attribute { public ColumnOrderAttribute(params string[] orders) { this.orders = orders; } public string[] orders; } // Закоменть эту строку и получишь старое поведение. [ColumnOrderAttribute("Login", "Password" )] public class User { public User(string login, string password ) { this.login = login; this.password = password; } private string login; private string password; // Properties public string Login { get { return login; } set { login = value; } } public string Password { get { return password; } set { password = value; } } } public class BLL { public object GetSource() { return new object[] { new User("aa", "aaaaaa"), new User("bb", "bbbbbb") }; } public static DataControlField[] CreateColumns(Type t) { object[] attrs = t.GetCustomAttributes(typeof(ColumnOrderAttribute), true); if (attrs != null && attrs.Length>0) { ColumnOrderAttribute orders = (ColumnOrderAttribute)attrs[0]; DataControlField[] res = new DataControlField[orders.orders.Length]; int count = 0; foreach( string column in orders.orders ) { BoundField f = new BoundField(); f.DataField = column; f.HeaderText = column; f.SortExpression = column; res[count] = f; count++; } return res; } else return null; } } ........ ........ protected void Page_Init(object sender, EventArgs e) { DataControlField[] ff = BLL.CreateColumns(typeof(User)); if (ff != null) foreach (DataControlField f in ff) GridView1.Columns.Add(f); else GridView1.AutoGenerateColumns = true; }... << RSDN@Home 1.1.4 stable SR1 rev. 568>> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2006, 20:15 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=34045611&tid=1388728]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 324ms |

| 0 / 0 |
