У меня есть интересная проблема со вставкой строк данных в представление данных.Я получаю набор данных из базы данных.Эта информация сгруппирована.Есть три уровня из этого набора данных.Например:
Category SaleValue
SubCategory1 SaleValue
SubCategory2 SaleValue
SubCategory2 SaleValue
SubCategory1 SaleValue
SubCategory1 SaleValue
Category SaleValue
...
Я назначил целочисленные значения для группировки.Category = 0, SubCategory1 = 1, SubCategory2 = 2. Это возвращает хороший DataView со всей правильной информацией.
Моя проблема заключается в том, как вставить новые данные по определенным индексам.Для отчета есть еще один уровень данных.Существует один последний уровень данных, которые я получаю.Это состоит из продуктов для каждого уровня.Например (построение на примере выше).
Category SaleValue
SubCategory1 SaleValue
SubCategory2 SaleValue
Product SaleValue
Product SaleValue
SubCategory2 SaleValue
Product SaleValue
SubCategory1 SaleValue
SubCategory1 SaleValue
Category SaleValue
...
Мне нужно объединить эти данные в соответствующие разделы.Тем не менее, я чувствую, что каким-то образом, когда я вставляю свой текущий код, вставки отбрасывают индексы DataView.Вот что у меня так далеко.Пожалуйста, прости меня, если я что-то упустил.Я новичок в DataViews.
private DataView AddProducts(DataView data)
{
int position = 0;
for (int i = position; i < data.Count; i++)
{
DataRowView currentRow = data[i];
if (current.Row.Field<int>("group") == 2)
{
var productData = //DB call for data
foreach (DataRowView row in productData)
{
position = i+1; //Dont want to insert at the row, but after.
DataRow newRow = data.Table.NewRow();
newRow[0] = row["ProductName"];
newRow[1] = row["Sale"];
data.Table.Rows.InsertAt(newRow, position);
// i is now position. This will allow another insert to insert on the
// next row, or for the loop to start at the row after this inserted
// row.
i = position;
}
}
}
return data;
}
Кажется, я что-то упустил.Может быть, потому что я устанавливаю верхние границы цикла, чтобы быть исходными данными. Номер счета?Вставка портит индексы?Потому что, когда я проверяю индекс выше, чем там, где я вставил, вставленные данные, кажется, повторяются или не вставляются в правильные индексы.