У меня есть таблица данных, которую я использую для заполнения с помощью LINQ, затем я добавляю несколько пользовательских столбцов и заполняю их программно - если пользователь нажимает на заголовок столбца для повторной сортировки, все данные в добавленных столбцах исчезают. Я, очевидно, упускаю что-то очень простое здесь, но не вижу леса за деревьями.
У меня также есть пара других вопросов о том, как я делаю вещи:
- в моем коде я получаю доступ к пользовательским ячейкам таблицы данных по имени, но в ячейках LINQ мне нужно использовать ссылочный номер ячейки (то есть: (1,2) вместо (всего 2) (я понимаю, что имя заменяется на int) - могу ли я назвать столбцы? Как насчет того, чтобы конечный пользователь переупорядочил их?
Это один из первых случаев, когда я использовал такую сетку данных, поэтому любые указатели были бы хорошими.
LINQ-код для извлечения данных
Dim query = From m In db.details _
Where m.InboundDate >= CType(MonthCalendar1.SelectionStart, DateTime) _
And m.InboundDate <= CType(MonthCalendar1.SelectionEnd, DateTime).AddHours(23).AddMinutes(59) _
And m.ClientNo = 1 _
Join md In db.Manifests On md.ManifestID Equals m.MainID _
Select m.Zone, m.MainID, m.InboundDate, m.Zip, md.LadingPkgQty, m.Weight
код для заполнения данными и добавления столбцов
billingDatagrid.DataSource = query
billingDatagrid.Columns.Add("Package Rate", "Package Rate")
billingDatagrid.Columns.Add("LTL", "LTL Rate")
billingDatagrid.Columns.Add("Freight", "Freight")
billingDatagrid.Columns.Add("Fuel Surcharge", "Fuel Surcharge")
billingDatagrid.Columns.Add("Linehaul", "Linehaul")
billingDatagrid.Columns.Add("Billed Amount", "Billed")
Пример кода доступа к столбцам таблицы данных:
Select Case currentZone
Case 1
packageRate = Val(billingDatagrid(4, currentrow).Value) * zone1PkgRate
billingDatagrid("Package Rate", currentrow).Value = packageRate
If Val(billingDatagrid(5, currentrow).Value) > 500 Then
LTLCharge = zone1_ltlBase + (Val(billingDatagrid(5, currentrow).Value) - 500) * zone1_ltlOver
Else
LTLCharge = zone1_ltlBase
End If
billingDatagrid("LTL", currentrow).Value = LTLCharge
В конце всего этого мне нужно будет создать файл .csv для экспорта - очевидно, важно, чтобы данные correst оставались с каждой строкой!
Заранее спасибо за совет.