2013-10-14 45 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

相關問題