【问题标题】:c# show 2 columns of database with 28 columnsc#显示2列数据库,28列
【发布时间】:2017-01-11 17:20:24
【问题描述】:

我有一个包含 28 列的数据库。第一列是代码,第二列是名称,其余的是值。

public void displayData()
{
    con.Open();
    MySqlDataAdapter da = new MySqlDataAdapter("SELECT * FROM gehaltes", con);
    DataTable dt = new DataTable();

    da.Fill(dt);
    dataGridView1.DataSource = dt;
    dataGridView1.AutoResizeColumn(DataGridViewAutoSizeColumnsMode.DisplayedCells);
    con.Close();
}

通过这部分程序,我可以看到 datagridview 中的所有列。我只想要前 2 列,但如果我想进行更改,我必须使用所有 28 列。

【问题讨论】:

  • 也许不要使用SELECT * ??通常,始终按您想要的顺序指定列是一个好主意。您不需要对所有列进行更改除非您将更改其他 26 列中的某些内容;如果用户看不到/编辑它们,这似乎不太可能
  • @Plutonix 我认为他的意思是他不希望它们显示在 datagridview 中。
  • 您应该能够遍历 datagridview 的列并设置它们的可见属性。

标签: c# mysql datagridview


【解决方案1】:

您可以设置各个列的可见属性:

DataGridView dgv;
// ...
foreach(DataGridViewColumn c in dgv.Columns)
   c.Visible = c.Name == "code" || c.Name == "Name";

【讨论】:

    【解决方案2】:

    将 DataGridView 的 AutoGenerateColumns 属性设置为 false,并添加两列,属性为 DataPropertyName 引用您要显示的名称。

    例子:

    da.Fill(dt);
    dataGridView1.AutoGenerateColumns = false;
    
    DataGridViewColumn col = new DataGridViewColumn();
    col.Name = "name";
    col.HeaderText = "header";
    col.DataPropertyName = "yourDBField";
    
    dataGridView1.Columns.Add(col);
    
    dataGridView1.DataSource = dt;
    dataGridView1.AutoResizeColumn(DataGridViewAutoSizeColumnsMode.DisplayedCells);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-18
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多