【问题标题】:Change, Hide and Display Columns from a DataTable in a DataGridView在 DataGridView 中更改、隐藏和显示数据表中的列
【发布时间】:2016-08-28 12:00:22
【问题描述】:

我有一个从 SQL 查询中获取数据的 DataTable(我知道我是如何做到的,它容易受到 SQL 注入的影响,但是为了这个问题,我使用普通的 SQL 查询只是为了显示它比三层级别更简单)。我想要做的是更改 datagridview 中显示的列。

例如,我想隐藏 'ProdID' 列,我想将 'ProdDesc' 列更改为 'Product Name' 等等。

这是我到目前为止所拥有的,但它根本没有任何作用:

query = "Select * From Product";
Products = db.GetDataTable(query);           
Products.Columns[1].ColumnName = "Product Name";
Products.Columns[2].ColumnName = "Currently in stock";
Products.Columns[3].ColumnName = "Product Price \"R\"";
Products.Columns[4].ColumnName = "Profit Per Product\"R\"";
Products.Columns[5].ColumnName = "Product Type Code";
Products.Columns.Add("Product Type Name");
foreach (DataRow dr2 in Products.Rows)
{
     string query11 = "Select TypeDesc From Product Type Where TypeNo ='" + dr2[6].ToString().Trim() + "'";
     DataTable Names = db.GetDataTable(query11);
     dr2[6] = Names.Rows[0][0];
}
dgvProdInformation.DataSource = Products; 

数据库列是这样的:

【问题讨论】:

    标签: c# winforms sqlite datagridview datatable


    【解决方案1】:

    尝试这样更改列名,

    Products.Columns[intColumnIndex].HeaderText = "Something";
    

    并用这个隐藏 ID 列(如 TaW 所说)

    Products.Columns["ProdID"].Visible = false;
    

    希望有帮助,

    【讨论】:

    • 连同Products.Columns["ProdID"].Visible = false;
    【解决方案2】:

    首先创建一个 DataTable 并根据需要定义列。然后将数据从 sql 传输到您的自定义表。示例:

    DataTable dt=new DataTable();
    
    DataColumn clm0=new DataColumn("ColumnHeader",typeof(string))
    .
    .
    
    dt.Columns.Add(clm0);
    .
    .
    
    foreach(DataRow item in Products.Rows)
    {
    DataRow new_row=dt.NewRow();
    
    new_row["ColumnHeader"]=item["Column"]
    dt.Rows.Add(new_row);
    }
    
    dgvProdInformation.DataSource=dt;
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-09-10
      • 2019-09-21
      • 2023-03-26
      • 1970-01-01
      • 2017-03-11
      • 1970-01-01
      • 2011-12-27
      • 2015-04-29
      • 1970-01-01
      相关资源
      最近更新 更多