Как отобразить данные из двух таблиц в gridview? - PullRequest
2 голосов
/ 21 февраля 2012

Я занимаюсь разработкой приложения asp.net и застрял, поэтому прошу помощи.

База данных: в моей базе данных (MySql) есть ингредиент таблицы (idI, имя и т. Д.)и каждый ингредиент может иметь более одного типа ингредиента (idT, type_name и т. д.).Из-за связи многих со многими у меня есть другая таблица, которая содержит идентификатор ингредиента и идентификатор типа ингредиента.

Приложение: В моем приложении у меня есть gridview, который показывает все данные ингредиента.Я использую свой собственный метод FillGVIngredient, чтобы заполнить сетку с использованием набора данных и адаптера данных.

Вопрос: Как я могу отобразить другой столбец в моем gridView, который будет отображать все типы ингредиентов, которые принадлежат идентификатору ингредиента (каждая строка в gridviewпредставляет 1 ингредиент) со списком маркеров, поэтому выходные данные будут выглядеть следующим образом:

Ingredient_Type      Ingredient   id
--------------------------------------
-type 1*             ingredient1   1
-type 2*
-type 3*
--------------------------------------
-type 5              ingredient2   2
-type 6

* типы ингредиентов должны отображаться в одной ячейке.В приведенном выше примере показаны 2 строки из gridview.

Я пытался использовать поле шаблона со списком маркеров, но я не знаю, как перебирать строки, чтобы передать идентификатор ингредиента в SQL-выражение источника данных списка маркеров..

1 Ответ

1 голос
/ 21 февраля 2012

Вы на правильном пути. BulletedList в TemplateField является правильным подходом.Но вы должны использовать GridView RowDataBound , чтобы связать его с DataSource.Посмотрите:

protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow) {
        var rowView = (DataRowView)e.Row.DataItem;
        var bullet = (BulletedList)e.Row.FindControl("BulletedList1");
        // now get the DataSource according to the ID (f.e. rowView["Ingredient_ID"]) 
        bullet.DataSource = getIngredientTypes(rowView["Ingredient_ID"]);
        bullet.DataTextField = "Ingredient_Type";
        bullet.DataValueField = "Type_ID";
        bullet.DataBind();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...