2011-01-27 75 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 
}