在数据库里需对应的把表字段备注加上,不然取不到备注,没有则在Grid列头显示的是原字段名。
using (SqlConnection conn = new SqlConnection(_Con))
{
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter(_Sql, conn);
DataTable dt = new DataTable();
sda.MissingSchemaAction = MissingSchemaAction.AddWithKey; //加这句是为了取数据库完成架构
sda.Fill(dt);
string _Col = string.Empty;
for (int i = 0; i < dt.Columns.Count; i++)
{
_Col += "'"+dt.Columns[i].ColumnName+"',"; //这取需要的所有列,进行过滤不需的字段
}
_Col = _Col.TrimEnd(',');
string _GetRemark = @"SELECT
A.name AS table_name,
B.name AS column_name,
C.value AS column_description
FROM sys.tables A
INNER JOIN sys.columns B ON B.object_id = A.object_id
LEFT JOIN sys.extended_properties C ON C.major_id = B.object_id AND C.minor_id = B.column_id
WHERE A.name = '" + dt.TableName + "' And B.name in (" + _Col + ") Order By B.column_id ";
sda = new SqlDataAdapter(_GetRemark, conn);
DataTable dtRemark = new DataTable();
sda.Fill(dtRemark);
this.superGridControl1.PrimaryGrid.DataSource = dt;
//string[] strName = { "用户编号", "用户", "用户名称", "真名", "密码", "部门" };
for (int i = 0; i < dt.Columns.Count; i++)
{
var gc = new GridColumn()
{
//HeaderText = strName[i],
//获取表备注给Grid表头中文名,空的默认原字段名
HeaderText = dtRemark.Rows[i]["column_description"].ToString() != ""?dtRemark.Rows[i]["column_description"].ToString():dt.Columns[i].ColumnName,
DataPropertyName = dt.Columns[i].ColumnName
};
this.superGridControl1.PrimaryGrid.Columns.Add(gc);
}
}