2011-01-27 2 views
0

У меня есть выпадающий список и gridview.SQL datasource 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"> 

Его д 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> 

Когда страница загружается. Gridview запрашивает Dropdown.SelectedValue, прежде чем Dropdown полностью загрузится и установит SelectedValue. Итак, SelectedValue возвращает "", а Gridview ничего не показывает.

Когда я нажимаю на раскрывающийся список и выбираю имя, он делает обратную передачу, и все работает как запланировано.

Так как я могу убедиться, что выпадающие нагрузки сначала и gridview загружаются во-вторых?

ответ

2

Когда вы даете управление элементам управления источником данных, вы не можете явно контролировать это. То, что вы можете сделать, это явно вызвать DataBind() в gridview после загрузки выпадающего списка для повторной привязки к базе данных. Вы также можете отменить самую первую загрузку gridview (если вы хотите исключить вызов базы данных), нажав на событие Selecting и установив e.Cancel = true.

Я не знаю, если упорядочение DataSourceControls влияет на приоритет исполнения ... Я не знаю, если это является фактором, тоже ...

HTH.

+0

Как я знаю, когда выпадающий полностью загружена и SelectedValue не является нулевым больше? – CasperT

+0

dropdown_load недостаточно. Я просто испытал. Выбранный вал по-прежнему остается нулевым в этой точке – CasperT

+0

dropdown_databound сделал трюк. Не могу поверить, что я пропустил твою идею. Спасибо – CasperT

-1

В Page_Load метод()

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

В этот момент Dropdown все еще не загружен, и поэтому выбранное значение равно null. – CasperT

Смежные вопросы