Datatable в ASPX используется в качестве источника данных для нескольких пользовательских элементов управления - PullRequest
0 голосов
/ 11 ноября 2009

На странице ASPX загружено 7 пользовательских элементов управления. В каждом пользовательском элементе управления имеются привязанные к данным элементы управления (например, сетка).

В настоящее время каждый пользовательский элемент управления выполняет запрос для возврата данных. Возвращенные данные одинаковы для каждого пользовательского элемента управления, и я отфильтровываю то, что мне нужно показать для каждого пользовательского элемента управления. Так что один и тот же запрос выполняется 7 раз (да, я знаю).

Что я хотел бы сделать, так это создать таблицу данных на странице ASPX, а затем разрешить каждому gridview использовать этот источник данных в качестве своего источника данных, чтобы запрос выполнялся только один раз.

Буду признателен за любую помощь в этом.

Ответы [ 5 ]

1 голос
/ 11 ноября 2009

Вы можете установить открытое свойство для каждого элемента управления (например, List), выполнить запрос на странице aspx и передать его элементам управления

1 голос
/ 11 ноября 2009

Может быть, вы можете выставить свойство в вашем usercontrols, которое получает данные. На вашей странице, которая содержит пользовательские элементы управления, задается свойство.

0 голосов
/ 12 ноября 2009

Если ваши пользовательские элементы управления предоставляют свойство, которое позволит назначить ему DataTable, вы сможете обеспечить функциональность, выполнив запрос только один раз:

// In your ASPX page
DataTable dt = new DataTable()
... // populate the table from the database

userControl1.Source = dt;
userControl2.Source = dt;
...
userControl7.Source = dt;

// In your user controls
// Assumes a GridView called myGridView
public DataTable Source
{
    set
    {
        myGridView.DataSource = value;  //or hold it somewhere else
    }
}

Это не самый эффективный код за все время, но таким образом вы будете выполнять запрос только один раз.

0 голосов
/ 11 ноября 2009

Я думаю, что подход, о котором вы думаете, заставит вас проделать большую дополнительную работу. Лучше кешировать данные, а затем, прежде чем каждый пользовательский элемент управления выполнит запрос, вы сначала проверяете кеш. Если вы получаете данные из кеша, вы можете использовать их для выполнения действий. В противном случае вы выполняете запрос и получаете данные из базы данных. Таким образом, существующая вещь будет работать, и вы получите желаемый результат с минимальными усилиями.

0 голосов
/ 11 ноября 2009

Семь GridViews излишни и будут серьезно снижать производительность страницы. Получите данные один раз на главной странице. Затем вы можете установить свойства для пользовательских элементов управления и отображать их в виде таблицы в каждом пользовательском элементе управления.

...