Ошибка параметра выбранного значения источника данных SQL - PullRequest
0 голосов
/ 27 января 2011

У меня есть выпадающий список и сетка.

Источник данных 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>

Вид сетки:

 <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">

Источник данных:

<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 ничего не показывает.

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

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

Ответы [ 2 ]

2 голосов
/ 27 января 2011

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

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

НТН.

0 голосов
/ 27 января 2011

При методе Page_Load ()

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