多くの人がこのコントロールツールキットの問題を抱えているようです。私はインターネットで数日間、答えを探していて、それを見つけることができませんでした。私が今まで見たベストソリューションは、自分がやりたくない「自分で並べ替える手続きを書く」ことです。AjaxControlToolkit - ReorderList - 更新ステートメントを実行しません
<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 >= (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)は変更されていません。それは変化している可能性がありますし、戻って変更することができます...私は見るためにログを見ています。
明らかに間違っていますか?
updatepanelからviewstateオプションを削除すると、redorderlistはすべてのポストバックで再バインドされます。 –
EnableViewState = "False" ViewStateMode = "Disabled"ですが、それは意味しませんか?私は実際にそれを両方の方法で試しました。 – Lucretius