Asp.net 从SQLDatasource获取列名

Asp.net 从SQLDatasource获取列名,asp.net,Asp.net,因此,我使用的是一个SQL数据源,它使用下拉列表中的选定值作为参数触发存储过程,以返回多个不同表中的一个。然后我有一个gridview,它使用这个SQLdatasource作为数据源来显示返回的值 我想要的是能够在运行时获取列名,以便在以后的方法中使用它。但是,SQLDatasource似乎没有获取此数据的属性,当我在数据绑定后尝试获取Datagridview的列时,gridview只显示一个列(自动生成的select列)。有办法做到这一点吗?我不知道如何使用SQLDatasource,但是如果

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


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

我不知道如何使用SQLDatasource,但是如果将数据加载到DataTable中,您可以在codebehind中轻松做到这一点。例如

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();
var ColumnName数组=dt.Columns.Cast().Select(x=>x.ColumnName.ToArray();

每列都有ColumnName属性…但并非所有列都必须有名称:
选择EmployeeID,HourlyWage*HoursWorked from…
是完全合法的SQL,结果集的第二列没有名称。非常正确。不过,在这个问题的上下文中,听起来他总是有列名。我认为最好总是为我的结果集有列名。