如何使用动态WHERE子句将gridview绑定到数据源?

时间:2013-10-14 08:26:20

标签: asp.net sql vb.net gridview datasource

我正在使用Visual Basic for ASP。 NET

我知道如何仅使用后面的代码来填充数据的gridview,比如

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和谷歌,以及这些网站,但所有结果只是向我展示了如何使用所有行或静态条件填充gridview,而不是像我所说的那样动态的那个。

非常感谢任何帮助

2 个答案:

答案 0 :(得分:3)

您可以尝试替换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>

答案 1 :(得分:1)

我找到了将gridview绑定到动态会话变量的正确方法,而不涉及代码:只需使用<SessionParameter>

中的<SelectParameter>媒体资源即可
<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>