【问题标题】:Get Column Names from SQLDatasource从 SQLDatasource 获取列名
【发布时间】:2013-06-17 18:31:55
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    我不知道如何使用 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();
    

    【讨论】:

    • 每一列都有一个 ColumnName 属性...但并非所有列都必须有名称:select EmployeeID , HourlyWage * HoursWorked from ... 是完全合法的 SQL,结果集的第二列没有名称。
    • 确实如此。但是,在问题的上下文中,听起来他总是会有列名。我认为最好的做法是始终为我的结果集使用列名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 2016-05-22
    • 2011-05-10
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    相关资源
    最近更新 更多