如何使用动态 WHERE 子句将网格视图绑定到数据源?

Posted

技术标签:

【中文标题】如何使用动态 WHERE 子句将网格视图绑定到数据源?【英文标题】:How can I bind a gridview to datasource with dynamic WHERE clause? 【发布时间】:2013-10-21 18:40:29 【问题描述】:

我正在使用 Visual Basic for ASP。网络

我知道如何只使用后面的代码用数据填充网格视图,就像这样

Dim ds as new datasourse
Dim da as new dataadaptor
Dim con as new SqlConnection
Dim cmd as new SqlCommand
... 
Cmd = "select ticketID, problem_text from problems where support_engineer = " & Session("Logged_in_user_id")
... 
Gridview1.Datasource = ds
Gridview1.Datasources. DataBind

这很好用,但我的问题是:如何拖放 gridview 控件,并在设计时仅使用向导填充 gridview,如何定义 SELECT 语句以仅选择相关的行到登录的用户ID?请参阅上面的 sql 语句,它使用了我在 Page_Load 事件中创建的会话变量,但我如何在设计模式下使用相同的逻辑? (我不想在后面的代码中修改数据源控件)

我查看了 youtube 和 google,以及这个网站,但所有结果都只是向我展示了如何使用所有行或静态条件填充 gridview,而不是像我演示的那样动态填充。

非常感谢任何帮助

【问题讨论】:

【参考方案1】:

您可以尝试替换 aspx 文件中的表单标签

<form id="form1" runat="server">
<div>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:TestConnectionString %>" 
        SelectCommand="SELECT ticketID, problem_text FROM Tabs WHERE (support_engineer = @Param1)">
        <SelectParameters>
            <asp:SessionParameter Name="Param1" SessionField="Logged_in_user_id" />
        </SelectParameters>
    </asp:SqlDataSource>
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True" 
         DataSourceID="SqlDataSource1">
    </asp:GridView>
</div>
</form>

【讨论】:

谢谢,但这是我得到的:属性“SessionField”不是元素“参数”的有效属性【参考方案2】:

我找到了将 gridview 绑定到动态会话变量的正确方法,而不涉及后面的代码:。只需在&lt;SelectParameter&gt; 中使用属性&lt;SessionParameter&gt;

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:TestConnectionString %>" 

SelectCommand="SELECT ticketID, problem_text FROM problems 
               WHERE (support_engineer = @eng_id) 

<SelectParameters>
         <asp:SessionParameter 
              Name="eng_id" 
              SessionField="LoggedInUser" 
              Type="String" />
</SelectParameters>
</asp:SqlDataSource>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True" 
         DataSourceID="SqlDataSource1">
</asp:GridView>

【讨论】:

以上是关于如何使用动态 WHERE 子句将网格视图绑定到数据源?的主要内容,如果未能解决你的问题,请参考以下文章

如何将多行和多列绑定到列表视图?

在数据库视图中应用动态 where 条件(oracle - 12c,mysql 5+)

在 extjs 中如何将存储数据绑定到网格

如何使用动态数组使用where子句查询mysql数据库

如何通过文本框过滤数据表视图中的子表单? #likeoperator #where 子句

在“绑定”数据网格视图中设置工具提示