【问题标题】:How to fill gridView wihtout actually knowing any of the fields如何在不知道任何字段的情况下填充 gridView
【发布时间】:2021-09-18 22:34:20
【问题描述】:

我有这个问题select distinct b.Name Project, a.Name Field from viewBatchClassIndexFields a inner join BatchDef b on a.DocumentBatchDefID = b.BatchDefID where b.Name = @projecto order by 1

这样做的目的是获取 projectName 并返回所需的 indexFields,但我的问题是,几乎每个 projectName 都作为不同的索引字段作为返回。 在事先不知道我将拥有哪些字段的情况下,如何填充 gridView。

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    没有什么能阻止您让 gridview 自动为您生成列。其实什么都不做就是默认!!!

    所以,我假设您使用了项目->设置,并设置了与数据库的有效连接。好的,现在我们将 gridview 放到网页上,如下所示:

            <asp:GridView ID="GridView1" runat="server"></asp:GridView>
    

    好的,现在,这是我们填充网格视图的代码:

      protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
                LoadGrid();
        }
    
        void LoadGrid()
        {
            // load up our grid
            using (SqlCommand cmdSQL = new SqlCommand("SELECT TOP 10 * from tblHotels ORDER BY HotelName ",
                new SqlConnection(Properties.Settings.Default.TEST4)))
            {
                cmdSQL.Connection.Open();
                GridView1.DataSource = cmdSQL.ExecuteReader();
                GridView1.DataBind();
            }
        }
    

    所以,我没有在哪里指定任何列名。

    输出:

    因此,您可以在上面推送/使用/进行任何您想要的查询 - 网格将使用数据源中的列名。因此,您可以将任何数据源(任何 sql 查询 - 甚至是带有连接的查询)用于该数据源。

    你当然也可以将查询结果加载到数据表中,然后当然循环列名,并将它们添加到gridview的列中,但是如果你不设置AutoGeneraateColumns = false(那么grid会自动为您生成列)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2020-07-26
      • 1970-01-01
      • 2018-01-18
      相关资源
      最近更新 更多