У меня есть набор данных, который имеет два типа данных.Как получить набор строк из таблицы данных
В первом DataTable у меня EMPNO, EmpName и EmpAddress
Во втором DataTable У меня есть EMPNO, EmpJoindate, EmpSalary.
Я хочу, чтобы результат, в котором я должен показать EmpName как этикетки и его/ее данные в GridView
Я заселить DataList с первым столом, и есть Empno как ключевых полей.
Затем я заполняю gridview внутри datatable, который имеет EmpNo, EmpJoinDate и EmpAddress.
Мой код некоторые, что, как показано ниже
Datalist1.DataSource = dt;
Datalist1.DataBind();
for (int i = 0; i < Datalist1.Items.Count; i++)
{
int EmpNo = Convert.ToInt32(Datalist1.DataKeys[i]);
GridView gv = (GridView)Datalist1.FindControl("gv");
gv.DataSource = dt2;
gv.DataBind();
}
Теперь у меня есть проблема, я должен связать детали соответствующего сотрудника в GridView. Принимая во внимание, что в приведенном выше коде будут отображаться все данные всех сотрудников в gridview.
Если мы используем IEnumerable, мы даем условие где (a => a.eno = EmpNo) и привязывает этот список к gridview.
Как это сделать в datatable.
любезно не дает мне предложений об изменении хранимой процедуры, которая приводит к значениям в двух таблицах, потому что это не может быть изменено. Мне нужно найти решение внутри существующих объектов.
С уважением Хема
Привет, Я модифицировал программу, как показано ниже Игоря, вместо DataRelation (мой TL не одобряю) Я использовал IEnumerable
DataTable дт = новый DataTable() ; dt.Columns.Add ("EmpNo"); для (int i = 65; i < 70; i ++) { DataRow dr = dt.NewRow(); dr ["EmpNo"] = i.ToString(); dt.Rows.Add (dr); }
DataTable dt2 = new DataTable();
dt2.Columns.Add("EmpNo");
dt2.Columns.Add("EmpName");
for (int i = 65; i < 70; i++)
{
DataRow dr = dt2.NewRow();
dr["EmpNo"] = i.ToString();
dr["EmpName"] = Convert.ToChar(i);
dt2.Rows.Add(dr);
}
Datalist1.DataSource = dt;
Datalist1.DataBind();
IEnumerable<DataRow> sequence = dt2.AsEnumerable();
for (int i = 0; i < Datalist1.Items.Count; i++)
{
string EmpNo = Datalist1.DataKeys[i].ToString();
string strExpr = "EmpNo =" + EmpNo.ToString();
GridView Gridview1 = (GridView)Datalist1.Items[i].FindControl("Gridview1");
Gridview1.DataSource = sequence.Where(t => t.Field<string>("EmpNo") == EmpNo);
Gridview1.DataBind();
}
Мои Designer.aspx как ниже
<asp:DataList ID="Datalist1" runat="server" DataKeyField="EmpNo">
<ItemTemplate>
<asp:GridView ID="Gridview1" runat="server">
</asp:GridView>
</ItemTemplate>
</asp:DataList>
Об исполнении я не наблюдаю никаких результатов, и я вижу ошибки как
RowError HasErrors на экране
Я включил в gridview полевое полевое управление как
<asp:GridView ID="Gridview1" AutoGenerateColumns="true" runat="server">
<Columns>
<asp:BoundField DataField="EmpNo" />
</Columns>
</asp:GridView>
И при выполнении он выдает сообщение об ошибке Поле или свойство с именем «EmpNo» не было найдено на выбранном источнике данных.
Я проверил «последовательность», используя режим отладки, и он имел значения в массиве, который я выделил,
Итак, где я буду неправильно
- Просмотр результатов Расширение Просмотр результатов Перечислим IEnumerable
- [0] {System.Data.DataRow} System.Data.DataRow HasErrors ложные BOOL
- ItemArray {объект [2]} объекта [] [0] объект "65" {строка} [1] "А" объект {строка} RowError "" строка RowState Добавлено System.Data.DataRowState
- Таблица {} System.Data.DataTable
- Статические члены
- непубличных членов
увидеть мой обновленный ответ. – garik