首页 > 解决方案 > 如何在不知道任何字段的情况下填充 gridView

问题描述

我有这个查询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.netgridview

解决方案


没有什么可以阻止您让 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 (那么网格将自动生成列为你)。


推荐阅读