AjaxControlToolkit - ReorderList - не выполняет оператор обновления - PullRequest
0 голосов
/ 25 января 2012

Похоже, что многие люди испытывают проблемы с этой частью контрольного инструментария. Я искал ответ в течение нескольких дней в Интернете и не смог его найти. Лучшее решение, которое я видел до сих пор, это «написать свою собственную процедуру переупорядочения», которую я не хочу делать.

<asp:ScriptManager ID="smgrJobBidding" runat="server">
    </asp:ScriptManager>
<asp:UpdatePanel ID="uPanelReorderList" runat="server" 
    EnableViewState="False" ViewStateMode="Disabled">
    <ContentTemplate>
<ajaxToolkit:ReorderList ID="rlBiddingJobs" runat="server" AllowReorder="True" 
    DataKeyField="BidID" 
    DataSourceID="sqlDStblJobBids" 
    PostBackOnReorder="True" 
    SortOrderField="Preference" 
    DragHandleAlignment="Left"
    ClientIDMode="AutoID" 
    EnableViewState="False">
    <DragHandleTemplate>
       <div style="float:left;" class="DragHandleClass">
       </div>
    </DragHandleTemplate>
    <ItemTemplate>
        <asp:Button ID="btnDeleteSignup" runat="server" CommandName="Delete" 
        style="float:right;" Text="Delete" Width="75" Font-Size="Small" Height="20px" />
        <asp:Label ID="lblPostingID" runat="server" Text='<%# Eval("PostingID") %>'></asp:Label>
    </ItemTemplate>
</ajaxToolkit:ReorderList>
    </ContentTemplate>
</asp:UpdatePanel>

Объект источника данных SQL немного громоздкий из-за нормализованного расположения таблиц.

<asp:SqlDataSource ID="sqlDStblJobBids" runat="server" 
    ConnectionString="<%$ ConnectionStrings:JobsDB %>" 
    SelectCommand="SELECT dbo.tblJobBids.BidID, dbo.tblJobBids.PostingID, dbo.tblJobBids.EUID, dbo.tblJobBids.Preference, dbo.tblJobPostings.Shift, dbo.tblJobPostings.Needs, 
                  dbo.tblJobPostings.PostedDate, dbo.tblJobPostings.ClosingDate, dbo.tblDepartments.Department, dbo.tblJobs.JobName
FROM dbo.tblJobBids INNER JOIN
                  dbo.tblJobPostings ON dbo.tblJobBids.PostingID = dbo.tblJobPostings.PostingID     INNER JOIN
                  dbo.tblJobs ON dbo.tblJobPostings.JobID = dbo.tblJobs.JobID INNER JOIN
                  dbo.tblDepartments ON dbo.tblJobPostings.DepartmentID = dbo.tblDepartments.DeptID
WHERE tblJobPostings.ClosingDate &gt;= (SELECT GETDATE()) AND tblJobPostings.PostingID 
IN (SELECT tblJobBids.PostingID FROM  tblJobBids WHERE tblJobBids.EUID = @EUID)
ORDER BY tblJobBids.Preference Asc;"
    DeleteCommand="DELETE FROM tblJobBids WHERE tblJobBids.BidID = @BidID;" 
    UpdateCommand="UPDATE dbo.tblJobBids SET tblJobs.Preference = @Preference WHERE tblJobs.BidID = @BidID;" >
    <DeleteParameters>
        <asp:Parameter Name="BidID" />
    </DeleteParameters>
    <SelectParameters>
        <asp:SessionParameter Name="EUID" SessionField="sEUID" />
    </SelectParameters>
    <UpdateParameters>
        <asp:Parameter Name="Preference" Type="Byte"/>
        <asp:Parameter Name="BidID" Type="Int32"/>
    </UpdateParameters>
</asp:SqlDataSource>

Оператор select в порядке, я могу перетаскивать элементы, сколько хочу, но они «резинкой» возвращаются в положение, в котором они находились до перетаскивания. Это похоже на то, что оператор обновления не запускает обратную передачу.

Я добавил код устранения неполадок для подсчета асинхронных обратных передач на панели обновлений, и он определенно отправляет сообщения обратно. Данные в базе данных (SQL Server 2008 R2 Express) не изменяются. Это может измениться, а затем вернуться обратно ... Я просматриваю логи, чтобы увидеть.

Видите что-нибудь явно не так?

1 Ответ

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

Оказывается, я тупой, у меня был тип данных SortOrderField, установленный на "tinyint" в SQL Server 2008. Я изменил его с этого на просто "int", и теперь он работает.Первоначально я создал его как "tinyint", потому что предпочтения, как правило, будут только в масштабе чего-то маленького, например, 1-10.Как бы то ни было, сейчас это работает.

...