2012-01-25 81 views
0

多くの人がこのコントロールツールキットの問題を抱えているようです。私はインターネットで数日間、答えを探していて、それを見つけることができませんでした。私が今まで見たベストソリューションは、自分がやりたくない「自分で並べ替える手続きを書く」ことです。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 &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)は変更されていません。それは変化している可能性がありますし、戻って変更することができます...私は見るためにログを見ています。

明らかに間違っていますか?

+0

updatepanelからviewstateオプションを削除すると、redorderlistはすべてのポストバックで再バインドされます。 –

+0

EnableViewState = "False" ViewStateMode = "Disabled"ですが、それは意味しませんか?私は実際にそれを両方の方法で試しました。 – Lucretius

答えて

0

私は愚かであり、SortOrderFieldのデータ型はSQL Server 2008で「tinyint」に設定されていましたが、それを「int」から「int」に変更しました。私は最初に "tinyint"として作成しました。なぜなら、一般的には、好みは1-10のような小さなもののスケールにしかならないからです。何でも、それは今働いている。

関連する問題