繁体   English   中英

在DataGridView中更改,隐藏和显示DataTable中的列

[英]Change, Hide and Display Columns from a DataTable in a DataGridView

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

例如,我想隐藏“ ProdID”列,并想将“ ProdDesc”列更改为“产品名称”,依此类推。

到目前为止,这是我所拥有的,但是一点都不起作用:

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; 

数据库列的方式如下: 数据库

尝试这样更改列名称,

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

并以此隐藏ID列(如TaW所说)

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

希望有帮助,

首先创建一个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;

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM