簡體   English   中英

如何設置datagridview列在datagridview的左側

[英]how to set datagridview column is left side of a datagridview

我必須在項目中使用datagridview,因此需要在datagridview的左側顯示datagridview列,例如,

             column 1       column 2
-------------------------------------------
column 1 

column 2 

...

`// TODO: This line of code loads data into the 'hRPayDataSet.employee' table. You can move, or remove it, as needed.

 this.employeeTableAdapter.Fill(this.hRPayDataSet.employee);       
 dataGridView1.DataSource =employeeBindingSource;

 DataTable table2 = (DataTable)(dataGridView1.DataSource);
 dataGridView1.DataSource = null;
 DataTable tTable = null;
 try { tTable = GenerateTransposedTable(table2); }
 catch (Exception ex) { MessageBox.Show(ex.Message); }
 dataGridView1.DataSource = tTable;
 dataGridView1.RowHeadersVisible = true;
 dataGridView1.ColumnHeadersVisible = false;`

請幫我....

您可以嘗試以下操作:首先將DataGridView綁定到DataTable

DataTable table = (DataTable)(dataGridView1.DataSource);
DataTable tTable = null;
try
{
    tTable = GenerateTransposedTable(table);
}
catch(Exception ex)
{
    MessageBox.Show(ex.Message);
}

dataGridView1.DataSource = tTable;
dataGridView1.RowHeadersVisible = true;
dataGridView1.ColumnHeadersVisible = false;

GenerateTransposedTable轉置您的table

private DataTable GenerateTransposedTable(DataTable inputTable)
{
    DataTable outputTable = new DataTable();

    outputTable.Columns.Add(inputTable.Columns[0].ColumnName.ToString());

    foreach (DataRow inRow in inputTable.Rows)
    {
        string newColName = inRow[0].ToString();
        outputTable.Columns.Add(newColName);
    }

    for (int rCount = 0; rCount <= inputTable.Columns.Count - 1; rCount++)
    {
        DataRow newRow = outputTable.NewRow();

        newRow[0] = inputTable.Columns[rCount].ColumnName.ToString();
        for (int cCount = 0; cCount <= inputTable.Rows.Count - 1; cCount++)
        {
            string colValue = inputTable.Rows[cCount][rCount].ToString();
            newRow[cCount + 1] = colValue;
        }
        outputTable.Rows.Add(newRow);
    }

    return outputTable;
}

測試代碼:

private void Form1_Load(object sender, EventArgs e)
{
    DataTable table = new DataTable();
    table.Columns.Add("A");
    table.Columns.Add("B");
    table.Columns.Add("C");
    table.Columns.Add("D");
    table.Columns.Add("E");
    table.Columns.Add("F");

    dataGridView2.DataSource = table;

    DataTable table2 = (DataTable)(dataGridView2.DataSource);
    DataTable tTable = null;
    try
    {
        tTable = GenerateTransposedTable(table2);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }

    dataGridView2.DataSource = tTable;
    dataGridView2.RowHeadersVisible = true;
    dataGridView2.ColumnHeadersVisible = false;
}

更新2:

用以下代碼替換您的代碼:

// TODO: This line of code loads data into the 'hRPayDataSet.employee' table. You can move, or remove it, as needed.

this.employeeTableAdapter.Fill(this.hRPayDataSet.employee);
dataGridView1.DataSource = employeeBindingSource;

var bds = (BindingSource)(dataGridView1.DataSource);
HRPayDataSet ds = (HRPayDataSet)bds.DataSource;

DataTable dt = TransposeTable(ds.Tables[0]);
dataGridView1.Columns.Clear();
dataGridView1.DataSource = null;
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = dt;

新的TransposeTable()方法:

private DataTable TransposeTable(DataTable inputTable)
{
    DataTable outputTable = new DataTable();

    for (int i = 0; i < inputTable.Rows.Count; i++)
    {
        outputTable.Columns.Add("col" + i);
    }

    for (int rCount = 0; rCount <= inputTable.Columns.Count - 1; rCount++)
    {
        DataRow newRow = outputTable.NewRow();
        newRow[0] = inputTable.Columns[rCount].ColumnName.ToString();
        for (int cCount = 0; cCount <= inputTable.Rows.Count - 2; cCount++)
        {
            string colValue = inputTable.Rows[cCount][rCount].ToString();
            newRow[cCount + 1] = colValue;
        }
        outputTable.Rows.Add(newRow);
    }
    return outputTable;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM