我正在創建一個具有兩個控件 - 一個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將顯示數據。我很難過,並且從昨天開始試圖解決這個問題。
任何幫助將不勝感激。謝謝。
非常感謝你,是沒有的伎倆! – sam