Я думаю, что вы приближаетесь к этому с неправильного направления. Думайте о GridView
как о вашем дисплее. Вам нужно расположить данные как можно лучше, прежде чем передать их в GridView
. Я не уверен, как хранятся ваши данные, но вам может потребоваться выполнить итерацию ваших данных и создать новые записи, которые по сути являются группировкой, и поместить все необходимые данные в одну строку, к которой вы можете привязать данные.
Проблема с использованием RowDataBound
(или любых методов привязки данных) заключается в том, что вы работаете с данными построчно, а это не то, что вам нужно, поскольку вы не можете «видеть» данные других строк в их контексте. .
Что касается упорядочения данных, вы можете использовать следующий фрагмент, чтобы получить разделенный запятыми список для каждого значения col1:
string commaValues = string.Join(",",
(yourList.Where(i => i.Col1.Equals(someValue)).
Select(s => s.YourStringValue)).ToArray()));
Это создаст строку с разделителями-запятыми для заданного значения (someValue
в примере):
commaValues = "1,2,3,4,5"
Используйте вышеперечисленное, чтобы составить List
объектов, упорядоченных так, чтобы вы могли просто привязаться к ним напрямую. Например:
class NewObject
{
public string ID { get; set; }
public string Text { get; set; }
}
List<NewObject> arrangedData = new List<NewObject>();
// arrange the data here
yourGrid.DataSource = arrangedData;
yourGrid.DataBind();