我有一个DataTable从SQL查询中获取数据(我知道我这样做是很容易受到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;
答案 0 :(得分:1)
尝试这样更改列名
Products.Columns[intColumnIndex].HeaderText = "Something";
用此隐藏ID列(如TaW所说)
Products.Columns["ProdID"].Visible = false;
希望有所帮助,
答案 1 :(得分:1)
首先创建一个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;
希望这有帮助。