如何使用动态 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 绑定到动态会话变量的正确方法,而不涉及后面的代码:。只需在<SelectParameter>
中使用属性<SessionParameter>
<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+)