2014-03-03 31 views
0

我正在創建一個具有兩個控件 - 一個GridView和一個DropDownList的網頁。將DropDownList的選定值傳遞給Gridview的數據源的問題

DropDownList列表填充公司列表並使用sql數據源(存儲過程)。當用戶登錄時,他的用戶名將作爲參數傳遞給DropDownList的數據源,因此他只能看到他有權訪問的公司。這工作正常,下面是DropDownList的HTML標記。

<asp:DropDownList ID="ddlPortfolioCompanies" runat="server" Font-Names="tahoma" Font-Size="8pt" style="position: absolute; top: 50px; left: 735px; height: 18px;" AutoPostBack="True" DataSourceID="DropDownDataSource" DataTextField="Asset_Name" DataValueField="Asset_ID">    
     </asp:DropDownList> 

     <asp:SqlDataSource ID="DropDownDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ReportsConnectionString %>" SelectCommand= "usp_Assets" SelectCommandType="StoredProcedure">    
      <SelectParameters> 
       <asp:Parameter Name="User" Type="String" /> 
      </SelectParameters> 
     </asp:SqlDataSource> 

我在後面的代碼在頁面載入如下

DropDownDataSource.SelectParameters["User"].DefaultValue = System.Web.HttpContext.Current.User.Identity.Name; 

GridView控件還使用了SQL數據源(存儲過程)和「選擇的值」設置將DropDownList的默認值從DropDownLIst作爲參數傳遞給GridView的數據源。

<asp:GridView ID="GridView1" runat="server" CssClass="gvclass" OnRowUpdating="GridView1_RowUpdating" 
     AutoGenerateColumns="False" DataKeyNames="ID" 
     DataSourceID="SqlDataSource1" onrowdatabound="GridView1_RowDataBound" OnRowCreated="GridView1_RowCreated" BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CellPadding="4" 
      ForeColor="Black" GridLines="None" Width="65" Height="16px"> 
      <AlternatingRowStyle BackColor="#F7F7DE" /> 

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ReportsConnectionString %>" 
     SelectCommand="EXEC [Portfolio].[dbo].usp_SELECT @ID" 

     <selectparameters> 
       <asp:controlparameter name="ID" controlid="ddlPortfolioCompanies" propertyname="SelectedValue"/> 
      </selectparameters> 

問題:我正在測試這個,我可以訪問兩家公司(說A公司和B公司)。我第一次登錄時,DropDownList被A公司填充。但是,GridView控件沒有被填充並且是空的。如果我將DropDownList的值從公司A更改爲公司B,則GridView會顯示數據,如果我將值更改回公司A,GridView將顯示數據。我很難過,並且從昨天開始試圖解決這個問題。

任何幫助將不勝感激。謝謝。

回答

1

您是否嘗試在同一Page Load事件中設置其他控件參數的默認值?像

user = System.Web.HttpContext.Current.User.Identity.Name; 
conn = new SqlConnection(ConnectionStrings:NB-ReportsConnectionString); 
conn.Open(); 
SqlCommand cmd = new SqlCommand(usp_Assets, conn); 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.Parameters.Add("User", user); 
companyID = cmd.ExecuteScalar(); 
con.Close(); 
SqlDataSource1.SelectParameters("ID").DefaultValue = companyID 

我對我的C#,對不起更多有關Visual Basic

+0

非常感謝你,是沒有的伎倆! – sam

相關問題