从SQLDatasource获取列名

时间:2013-06-17 18:31:55

标签: asp.net

所以我使用的SQL数据源使用下拉列表的选定值作为参数来触发Store过程,以返回众多不同表中的一个。然后我有一个gridview,它使用这个SQLdatasource作为它的数据源来显示返回的值。

我想要的是能够在运行时获取列名,以便我可以在以后的方法中使用它。但是,SQLDatasource似乎没有获取此数据的属性,当我在数据绑定后尝试获取Datagridview的列时,gridview只显示一个列(自动生成的选择列)。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

我不知道如何使用SQLDatasource,但如果将数据加载到DataTable中,则可以在代码隐藏中轻松完成。 E.g。

var dt = new DataTable();
var connectionString = "your connection string";
using (var db = new SqlConnection(connectionString))
{
    var command = new SqlCommand("stored_procedure_name", db);
    command.CommandType = CommandType.StoredProcedure;
    db.Open();
    var reader = command.ExecuteReader();
    dt.Load(reader);
}
var columns = dt.Columns;

每列都有一个ColumnName属性。您可以使用Linq将列名称作为数组:

var columnNameArray = dt.Columns.Cast<DataColumn>().Select(x => x.ColumnName).ToArray();