2013-10-14 43 views
1

我正在使用ASP的Visual Basic。 NET如何使用动态WHERE子句将GridView绑定到数据源?

我知道如何填充使用仅次于代码数据的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和谷歌,以及这个网站看,但所有的结果只是简单地向我展示如何填充所有行或静态条件,而不是一个像我这样的动态人物。

任何帮助,高度赞赏

回答

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> 
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> 
+0

由于里面,但这里是我的了:属性“SessionField”不是元素“参数”的一个有效的属性 – Ahmad

相关问题