заполнить значения нескольких строк в одной строке в gridview - PullRequest
1 голос
/ 28 марта 2011

Я пытаюсь заполнить значения нескольких строк в одной строке в виде сетки, используя c sharp в разделе с ограниченным количеством строк кода позади страницы, например:

Col1      Col6

a            1
a            2
a            3
a            4

Я изменил это на

Col1     Col6

a           1 
            2
            3
            4

Теперь я хочу добиться этого, любая помощь, пожалуйста?

Col1     Col6

a            1  2  3  4

Что не так с кодом ниже?

if (e.Row.Cells[0].Text == "" && e.Row.Cells[5].Text != "")
{
    for (int a = 0; a<GridView1.Rows.Count; a++)
    {
        string s = GridView1.Rows[a].Cells[5].Text;
        GridView1.Rows[e.Row.RowIndex - 1].Cells[5].Text +=  s;
    }
}

Какую ошибку я совершаю, кто-нибудь?

Cell[0]  is Col1
Cell[5]  is Col6

1 Ответ

0 голосов
/ 29 марта 2011

Я думаю, что вы приближаетесь к этому с неправильного направления. Думайте о 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...