因此,我使用了一个 SQL 数据源,该数据源使用下拉列表的选定值作为参数来触发 Store 过程,以返回众多不同表中的一个。然后我有一个 gridview 使用这个 SQLdatasource 作为它的数据源来显示返回的值。
我想要的是能够在运行时获取列名,以便我可以在以后的方法中使用它。但是,SQLDatasource 似乎没有获取此数据的属性,当我在数据绑定后尝试获取 Datagridview 的列时,gridview 仅显示单个列(自动生成的选择列)。有没有办法解决这个问题?
因此,我使用了一个 SQL 数据源,该数据源使用下拉列表的选定值作为参数来触发 Store 过程,以返回众多不同表中的一个。然后我有一个 gridview 使用这个 SQLdatasource 作为它的数据源来显示返回的值。
我想要的是能够在运行时获取列名,以便我可以在以后的方法中使用它。但是,SQLDatasource 似乎没有获取此数据的属性,当我在数据绑定后尝试获取 Datagridview 的列时,gridview 仅显示单个列(自动生成的选择列)。有没有办法解决这个问题?
我不知道如何使用 SQLDatasource,但如果您将数据加载到 DataTable 中,您可以在代码隐藏中轻松完成此操作。例如
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();