2011-01-27 30 views
0

我有一個下拉菜單和一個gridview。SQL數據源selectedvalue參數錯誤

GridView的數據源是依賴於dropdown.SelectedValue

下拉:

<asp:DropDownList ID="DropDownListLoggedInUser" runat="server" autopostback="True" 
         DataSourceID="SqlDataSource3" DataTextField="Medarbejder" 
         DataValueField="Medarbejder" 
     onload="DropDownListLoggedInUser_Load"> 
        </asp:DropDownList> 

它的數據源:

   <asp:SqlDataSource ID="SqlDataSource3" runat="server" 
        ConnectionString="<%$ ConnectionStrings:EGWebtidConnectionString %>" 
        SelectCommand="SELECT [Medarbejder] FROM [Sager] WHERE ([Medarbejder] IS NOT NULL)"> 
       </asp:SqlDataSource> 

GridView控件:

<asp:GridView ID="GridViewSagsoversigt" runat="server" CellPadding="4" ForeColor="#333333" 
         GridLines="None" Style="text-align: left" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" 
         OnPreRender="GridViewSagsoversigt_PreRender" DataKeyNames="Sagsnr" EnablePersistedSelection="True" 
         SelectedIndex="0" OnSelectedIndexChanged="GridViewSagsoversigt_SelectedIndexChanged"> 

其d atasource:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:EGWebtidConnectionString %>" 

        SelectCommand="SELECT Sagsnr, Arbejskort, Adresse, Postnr, [By], Beskrivelse, Bemaerkning, Ansvarlig, Medarbejder FROM Sager WHERE ([Medarbejder] LIKE '%' + @Medarbejder + '%')"> 
         <SelectParameters> 
          <asp:ControlParameter ControlID="DropDownListLoggedInUser" Name="Medarbejder" 
           PropertyName="SelectedValue" Type="String" /> 
         </SelectParameters> 
        </asp:SqlDataSource> 

當頁面加載。在Dropdown完全加載並設置SelectedValue之前,Gridview要求Dropdown.SelectedValue。所以SelectedValue返回""和Gridview什麼也沒有顯示。

當我點擊下拉菜單並選擇一個名稱時,它會進行回發,並且它都按計劃運行。

那麼我怎麼能確定,下拉加載第一次和gridview加載第二?

回答

2

當您控制數據源控件時,不能明確地控制它。你可以做的是在加載下拉列表後重新調用DataBind()以重新綁定到數據庫。您也可以通過點擊選擇事件並設置e.Cancel = true來取消第一個gridview加載(如果您想消除數據庫調用)。

我不知道,如果DataSourceControls的順序會影響執行的優先級...我不知道這是否是一個因素太...

HTH。

+0

我怎麼知道什麼時候下拉完全加載和的SelectedValue不爲空了嗎? – CasperT 2011-01-27 14:10:11

+0

dropdown_load是不夠的。我剛測試過。 selectedValue在這一點仍然是空的 – CasperT 2011-01-27 14:16:18

-1

在的Page_Load()方法

if (Page.IsPostBack){ 
    //make the GridView to ask the Dropdown.SelectedValue here 
}