C # вертикально ориентированный DataGrid: изменить имена столбцов - PullRequest
1 голос
/ 22 февраля 2010

В настоящее время я использую технику, которую я нашел, когда ковыряюсь в интервалах для изменения ориентации DataGrid в C # для веб-части SharePoint. Он работает правильно, извлекает данные из базы данных SQL Server 2005 и отображает их в DataGrid. Я хотел бы знать, есть ли простой способ изменить имена столбцов, используя расширенное свойство в БД, или, альтернативно, если я могу установить их вручную (хотя у меня много столбцов, поэтому я бы предпочел добавить расширенное свойство в БД и отобразить их вместо имен полей).

// Create a new data adapter and fill a dataset with the above SQL data.
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds, "Bobst Specs");
// Flip the dataset to vertical orientation.
DataSet flipped_ds = FlipDataSet(ds);
DataView dv = flipped_ds.Tables[0].DefaultView;
// Bind the dataset to a datagrid and display.
DataGrid outputGrid = new DataGrid();
outputGrid.DataSource = dv;
outputGrid.DataBind();
outputGrid.ShowHeader = false; // Remove the integer headings.
outputGrid.AutoGenerateColumns = false;
Controls.Add(outputGrid);

Вот метод FlipDataSet:

public DataSet FlipDataSet(DataSet my_DataSet) 
{
    DataSet ds = new DataSet();
    foreach (DataTable dt in my_DataSet.Tables)
    {
        DataTable table = new DataTable();
        for (int i = 0; i <= dt.Rows.Count; i++)
        {
            table.Columns.Add(Convert.ToString(i));
        }
        DataRow r = null;
        for (int k = 0; k < dt.Columns.Count; k++)
        {
            r = table.NewRow();
            r[0] = dt.Columns[k].ToString();
            for (int j = 1; j <= dt.Rows.Count; j++)     
                r[j] = dt.Rows[j - 1][k];
            table.Rows.Add(r);
        }
        ds.Tables.Add(table);
    }
    return ds;
}

Мне также интересно, является ли это "правильным" способом изменения ориентации сетки данных или, по крайней мере, есть ли лучший способ сделать это вообще.

Ответы [ 2 ]

0 голосов
/ 21 апреля 2011

Другой способ переименовать столбец в сетке данных -

mygrid.Columns["EmpID"].HeaderText = "Employee ID";
0 голосов
/ 23 февраля 2010

Я решил переименовать столбцы, изменив свой оператор SQL SELECT, чтобы каждое поле там было названо. Например:

ВЫБРАТЬ fldCustomerName AS [Клиент Имя]

Это прекрасно работает.

...