ASP.net программно связывает набор данных с gridview - PullRequest
6 голосов
/ 15 июня 2011

У меня есть набор данных с около 15 столбцами, и у меня также есть вид сетки ASP.net.Мне было интересно, знает ли кто-нибудь, как я могу заполнить представление сетки набором данных, но проблема в том, что я просто хочу получить несколько столбцов из набора данных.

, в данный момент я просто делаю

    GridView1.DataSource = ds;
    GridView1.DataBind();

но это, очевидно, связывает все столбцы из набора данных с видом сетки.

Ответы [ 5 ]

10 голосов
/ 15 июня 2011

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

http://www.codeproject.com/KB/aspnet/dynamic_Columns_in_Grid.aspx

Кроме того, вы можете заранее настроить сетку в aspx:

<Columns> 
    <asp:BoundField DataField="ProductName" HeaderText="Product" SortExpression="ProductName" />
    <asp:BoundField DataField="CategoryName" HeaderText="Category" ReadOnly="True" SortExpression="CategoryName" />
    <asp:BoundField DataField="UnitPrice" DataFormatString="{0:c}" HeaderText="Price" HtmlEncode="False" SortExpression="UnitPrice" />
</Columns>

И убедитесь, что вы установили AutoGenerateColumns в ложь.

7 голосов
/ 15 июня 2011

GridView по умолчанию автоматически генерирует все столбцы на основе привязываемых данных.

Установите GridView.AutoGenerateColumns = false, а затем определите нужные столбцы с помощью свойства GridView.Columns.

2 голосов
/ 15 июня 2011

Я вижу два способа сделать это, в зависимости от того, что вы можете изменить и что должно остаться таким:

1) Если у вас есть контроль над запросом / процедурой, которая генерирует набор данных, и вы можете сделать это, не оказывая негативного влияния на другие сетки / страницы, измените запрос так, чтобы он только ВЫБИРАЛ выбранные вами столбцы. Вы по-прежнему можете использовать невыбранные столбцы в JOIN и WHERE, и вы получаете дополнительный бонус за то, что вам не нужно добавлять каждый столбец в ORDER BY.

2) Если у вас есть контроль только над сеткой и кодом, который используется для ее генерации, вы можете установить в качестве параметра DataGrid AutoGenerateColumns = false, а затем вложить в вашу DataGrid поля BoundFields, которые вам нужно показать. Это также позволяет вам форматировать, создавать имена столбцов и т. Д.

Если вы можете сделать обе эти вещи, ваша Сетка также должна загружаться быстрее.

1 голос
/ 15 июня 2011

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

0 голосов
/ 15 июня 2011
SqlCommand comm = new SqlCommand("Select required fields from YourTable, conn);

conn.Open();
SqlDataReader rdr = comm.ExecuteReader();

GridView1.DataSource = rdr;
GridView1.DataBind();

rdr.Close();

При этом будут напечатаны только обязательные поля.

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