从 sql 查询向网格视图添加列 (vb.net)

Add column to gridview from sql query (vb.net)

提问人:LukaszP 提问时间:10/18/2023 最后编辑:HardCodeLukaszP 更新时间:10/19/2023 访问量:46

问:

我有一个 gridview 来存储来自 SQL 查询的数据:

Dim sql2 As String
Dim ds2 As New DataSet

sql2 = "SELECT * FROM MyTable"

adapter.SelectCommand = New OleDbCommand(sql2, con)
adapter.Fill(ds, sql2)

GridView1.DataSource = ds.Tables(0)
GridView1.DataBind()

我不得不在 SQL 数据库中再添加一列,现在我想在我的网格视图中显示该列,但我不知道该怎么做。有人可以帮忙吗?MyTable

我试图在网络上找到解决方案,但没有一个使用 SQL 作为 gridview 中新列的来源。

SQL asp.net vb.net

评论

0赞 Olivier Jacot-Descombes 10/18/2023
SELECT *, MyNewColumn FROM MyTable也许,新列将从其他列中计算出来?还是空的?请解释!
0赞 Nick Abbot 10/18/2023
我会说,尝试使用 GridView.AutoGenerateColumns = True 或在开发人员环境中重新绑定 Gridview。
1赞 Nick Abbot 10/18/2023
@OlivierJacot-Descombes OP 表示,他已经将该列添加到他的 SQL 表中,因此它已经在“SELECT * ...”中不?
0赞 HardCode 10/18/2023
如果它尚未显示,则必须使用一些其他代码来操作 GridView 的列。此外,切勿在生产代码中使用 SELECT *
1赞 LukaszP 10/18/2023
好吧,我假设使用“SELECT * FROM MyTable”将始终返回 MyTable 中的每一列,包括新列。新列不会从其他列计算,也不会为空。

答:

0赞 ClearlyClueless 10/19/2023 #1

您需要更新 aspx 页面,并将列添加到您希望其显示的网格中。为此,可以添加所需的任何列类型,并将属性设置为 SQL 列或别名的名称。DataField

下面是一个典型的字符串字段供您参考。

<asp:GridView ID="gridDemo" runat="server">
    <Columns>
        <!--... existing columns in grid view...-->
        <asp:BoundField HeaderText="YourHeaderText" DataField="YourColumnName" />
    </Columns>
</asp:GridView>

评论

0赞 LukaszP 10/19/2023
感谢大家的投入。事实证明,我有 AutoGenerateColumns = False,将其更改为 True 解决了问题。
0赞 ClearlyClueless 10/19/2023
虽然可能会解决手头的问题,但这样做通常是不好的做法,尤其是在从数据库中使用时。当然,还有其他因素需要考虑,但明确通常是更可靠的方法,当然也是更可预测的方法。AutoGenerateColumns="true"select * ...