Оператор SQL неправильно заполняется из DetailsView (ASPX / C #) - PullRequest
2 голосов
/ 17 июня 2011

У меня есть следующий код на странице ASPX:

        <asp:DetailsView ID="DetailsView4" runat="server" AutoGenerateRows="False" 
            DataKeyNames="ChangeID,Completed" DataSourceID="SqlDataSource5" Height="50px" 
            Width="125px">
            <Fields>
                <asp:CheckBoxField DataField="Completed" HeaderText="Completed" 
                    SortExpression="Completed" />
                <asp:CommandField ShowEditButton="True" />
            </Fields>
        </asp:DetailsView>


<asp:SqlDataSource ID="SqlDataSource5" runat="server" 
    ConnectionString="<%$ ConnectionStrings:Properties %>" 

    SelectCommand="SELECT * FROM [ATI_CHANGE_REQUESTS] WHERE ([ChangeID] = @ChangeID)" 
    UpdateCommand="UPDATE ATI_CHANGE_REQUESTS SET Completed = @Completed WHERE ChangeID = @ChangeID">
    <SelectParameters>
        <asp:ControlParameter ControlID="grdRequests" Name="ChangeID" 
            PropertyName="SelectedDataKey[1]" Type="Int32" />
    </SelectParameters>
    <UpdateParameters>
        <asp:Parameter Name="Completed" />
        <asp:Parameter Name="ChangeID" />
    </UpdateParameters>
</asp:SqlDataSource>

И он, по большей части, работает правильно.Он извлекает правильный ChangeID из вида сетки, на который я ссылался в ControlParameter, но фактически никогда ничего не обновляет.SQL Profiler показывает команду, которую он выполняет как UPDATE ATI_CHANGE_REQUESTS SET Completed=0 WHERE ChangeID=53, когда у меня выбрана строка с ChangeID 53, но независимо от того, установлен флажок в DetailsView4 или нет, он всегда устанавливает Completed = 0.Что я сделал не так?

1 Ответ

0 голосов
/ 20 июня 2011

Оказывается, мой источник данных SQL скрыт по неизвестной причине, воссоздание SqlDataSource1 полностью устранило проблему, и я до сих пор не знаю, почему.В любом случае спасибо:)

...