0

asp.net ajaxツールキットコントロールでは、reorderlistを使用しています。

初めて再注文したときは問題なく動作しますが、それ以上は動作しません。

以下は私のコードです。

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
    <asp:ReorderList ID="rlItemList" DragHandleAlignment="Left" PostBackOnReorder="false"
        DataKeyField="VentureCategoryID" runat="server" SortOrderField="DisplayOrder"
        OnItemReorder="rlItemList_ItemReorder" AllowReorder="true" ClientIDMode="AutoID">
        <DragHandleTemplate>
            <div class="dragHandle">
            </div>
        </DragHandleTemplate>
        <ItemTemplate>
            <asp:Label ID="lblVentureCategoryID" runat="server" Visible="false" Text='<%#Eval("VentureCategoryID") %>' />
            <asp:Label ID="lblCategoryName" runat="server" Text='<%#Eval("CategoryName") %>' />
            <asp:Label ID="lblIsActive" runat="server" Text='<%#Eval("IsActive") %>' />
            <asp:Label ID="lblDisplayOrder" runat="server" Visible="false" Text='<%#Eval("DisplayOrder") %>' />
        </ItemTemplate>
        <ReorderTemplate>
            <asp:Panel ID="Panel2" runat="server" CssClass="reorderCue" />
        </ReorderTemplate>
    </asp:ReorderList>

背後にあるコードは..

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            List<VentureCategory> VenList = VentureCategory.GetAll();
            rlItemList.DataSource = VenList;
            rlItemList.DataBind();

        }
    }

    protected void rlItemList_ItemReorder(object sender, ReorderListItemReorderEventArgs e)
    {
        var nId = e.NewIndex + 1;
        var oId = e.OldIndex + 1;
        List<VentureCategory> VenCatList = VentureCategory.GetAll();
        //foreach (var item in VenCatList)
        //{
        //    item.DisplayOrder = 9;
        //    VentureCategory.Update(item);
        //}
        int OldCategoryid = Convert.ToInt32(rlItemList.DataKeys[e.OldIndex].ToString());
        int NewCategoryid = Convert.ToInt32(rlItemList.DataKeys[e.NewIndex].ToString());

        var sortedList = VenCatList.OrderBy(sl => sl.DisplayOrder);
        var Count = 1;
        Label CatId = e.Item.FindControl("lblVentureCategoryID") as Label;
        var newcatId = Convert.ToInt32(CatId.Text);
        foreach (var item in sortedList)
        {
            if (oId > nId && Count >= nId && oId >= Count)
                item.DisplayOrder = Count + 1;
            else if (nId > oId && nId >= Count && Count >= oId)
                item.DisplayOrder = Count - 1;

            if (item.VentureCategoryID == newcatId)
                item.DisplayOrder = nId;
            VentureCategory.Update(item);
            Count++;
        }
    }

誰か助けてくれませんかよろしくお願いします

4

1 に答える 1

0

テーブルが同じ定義と同じデータ型を持っているかどうかを確認します

于 2012-11-24T12:24:43.043 に答える