TableAdapter для возврата ТОЛЬКО выбранных столбцов? (VS2008) - PullRequest
1 голос
/ 30 марта 2009

(VS2008) Я пытаюсь настроить адаптер таблицы в типизированном наборе данных так, чтобы он возвращал только определенное подмножество столбцов из основной схемы таблицы, на которой он основан, но он всегда возвращает всю схему (все столбцы) с пустыми значениями в столбцах, которые я пропустил.

TableAdpater имеет методы Fill и GetData () по умолчанию, которые приходят из мастера, которые содержат каждый столбец в таблице, что нормально. Затем я добавил новый метод параметризованного запроса с именем GetActiveJobsByCustNo (CustNo), и я включил в запрос SQL только несколько столбцов, которые я действительно хочу видеть в этом табличном представлении.

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

Причина, по которой я этого хочу, заключается в том, что я могу просто вернуть несколько столбцов, чтобы использовать это табличное представление с AutoGenerateColumns в ASP.NET GridView. Так как он возвращает мне КАЖДЫЙ столбец в схеме, моя презентация GridView содержит гораздо больше столбцов, которые я хочу показать пользователю. И я хочу избежать объявления столбцов в GridView.

Ответы [ 3 ]

1 голос
/ 30 марта 2009

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

Поскольку вы упомянули, что уже создали процедуру, вам нужно использовать обозреватель сервера для подключения к базе данных и просто перетащить эту хранимую процедуру в рабочую область XSD. Это создаст отдельный QueryAdapter, который будет содержать только те столбцы, которые вы указали (все еще строго типизированы), и вы можете связывать / взаимодействовать с вашим GridView, используя вместо этого QueryAdapter.

1 голос
/ 30 марта 2009

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

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

Я не уверен, что ваши требования полностью, но этот пример должен помочь вам:

DataView dv = new DataView(ds.<Your_Table>);

// This will create a new data table with the same name,
// But with only two columns from the original table.
// This could then be bound to your data grid. 
DataTable dt = dv.ToTable(false,
                          ds.<Your_Table>.<Your_Column1Column>.ColumnName,
                          ds.<Your_Table>.<Your_Column1Column>.ColumnName);
0 голосов
/ 15 мая 2010

Просто удалите ненужные столбцы во время выполнения, прежде чем привязать их к Gridview. Базовый класс все еще просто DataTable.

...