Динамические столбцы с asp: LinqDataSource - PullRequest
0 голосов
/ 24 августа 2010

Я использую LinqDataSource вот так:

<asp:LinqDataSource ID="LinqDataSource3" runat="server"      OnSelecting="LinqDataSource3_OnSelecting">       

</asp:LinqDataSource>

И у меня есть ASPxGridView

<dxwgv:ASPxGridView ID="ASPxGridView2" ClientInstanceName="ASPxGridView2Client"
                            runat="server" AutoGenerateColumns="False" 
                            DataSourceID="LinqDataSource3">
                        </dxwgv:ASPxGridView>

Таким образом, я могу динамически добавлять столбцы при обработке события onSelecting:

protected void LinqDataSource3_OnSelecting(object sender, LinqDataSourceSelectEventArgs e)
    {
        MyModelDataContext context = new MyModelDataContext();
        ASPxGridView grid = ASPxPageControl1.TabPages[3].FindControl("ASPxGridView2") as ASPxGridView;


        if(grid.Columns.Count == 0){
            GridViewDataTextColumn txtColumn1 = new GridViewDataTextColumn();
            GridViewDataTextColumn txtColumn2 = new GridViewDataTextColumn();
            txtColumn1.FieldName = "UserId";
            txtColumn2.FieldName = "FirstName";

            grid.Columns.Add(txtColumn1);
            grid.Columns.Add(txtColumn2);    
        }

        e.Result = from u in context.Users select new { UserId = u.UserId, FirstName = u.FirstName };
    } 

Все сделано просто для тестирования, потому что моя идея состоит в том, чтобы иметь решение, позволяющее использовать linqDataSource в качестве источника данных для ASPXGridView, но объединить 2 или 3 таблицы и показать результаты в этой сетке.

Я хочу спросить, является ли это хорошим решением или есть какой-нибудь другой лучший способ представить некоторые представления, сделанные из нескольких таблиц, путем объединения?

Второй вопрос: у меня есть пользователи и группы, и я хотел бы иметь одну таблицу, в которой у меня будет два столбца Имя и Тип

Для групп тип по группам и для пользователей тип будет пользовательский.

У меня нет такой таблицы в моей базе данных

Можно ли создать конкретный класс. Создать список объектов этого класса и заполнить его с помощью запроса linq и использовать его в качестве источника данных linq для этой сетки?

класс будет:

псевдокод:

Class MyClass {
string Type;
string Name;
}

или есть другой способ создать такую ​​таблицу?

Большое спасибо за помощь до свидания

1 Ответ

1 голос
/ 24 августа 2010

Отвечая на ваш первый вопрос, я хотел бы сказать вам, что код для создания столбцов лучше перенести на событие Page_Load.

Что касается вашего второго вопроса. Я думаю, что это хорошее решение для предоставления пользовательского IQueriable в событии Selecting объекта LinqDataSource. Вы можете получить данные из нескольких таблиц там. Для примера, пожалуйста, обратитесь к:

Выберите из нескольких таблиц с помощью LINQ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...