Как использовать разные поля в одном столбце в DataGridView - PullRequest
1 голос
/ 20 февраля 2009

У меня, возможно, уникальная ситуация, когда мне нужно использовать один столбец для двух различных переменных значений.

Мои данные имеют отдельные столбцы для даты и времени. Не мой выбор, я должен жить с этим. Строки отображаются в виде «пар». Строки 1 и 2 являются частью одного и того же функционального блока, но они являются отдельными строками в базе данных. В сетке, строка 1, столбец 1 должен использовать столбец даты, а в строке 2 столбец 1 - столбец времени. Это повторяется для каждого четного и нечетного ряда. См. Рисунок ASCII ниже.

Можно ли сделать ячейку скрытой в одной строке, но не в другой, а затем сделать так, чтобы оба поля имели общий заголовок столбца?

Я также открыт для использования других сеток, если вы знаете одну, которая облегчает выполнение этой функции.

-----------------------------------------------------------------
|Date/Time| ......
=================================================================
|1/1/2008 | .......
|10:00pm  | .......
-----------------------------------------------------------------
|1/2/2008 | .......
|7:00pm   | .......
-----------------------------------------------------------------
...
...
...

Ответы [ 2 ]

1 голос
/ 20 февраля 2009

Если у вас есть контроль над фидом данных, поступающим в вашу систему, скажем, хранимая процедура SQL, как насчет этого?

SELECT 
   ROWID AS 'ID'
   , MYDATE + MYTIME AS 'MYDATETIME'
FROM
   MYTABLE

Если у вас нет контроля над источником данных, я бы рекомендовал использовать событие on Row_Databound и изменить текст ячейки в соответствии с вашими потребностями. Это может означать, что вы делаете ячейку 3 равной ячейке 3 + ячейка 4, а затем скрываете ячейку 4 ... Но в любом случае, Row_Databound, вероятно, подойдет ...

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //ASSUMES COLUMN 2 IS DATE
        //AND COLUMN 3 IS TIME
        e.Row.Cells[2].Text = e.Row.Cells[2].Text + " " + e.Row.Cells[3].Text;
        e.Row.Cells[3].Visible = false;
    }
}
0 голосов
/ 20 февраля 2009

Я бы реорганизовал базу данных в более логичный формат, а затем продолжил.

Если вы абсолютно не можете изменить базу данных, я бы, возможно, обернул GridView и добавил бы пользовательскую функциональность, необходимую для работы с данными особого случая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...