2010-09-29 188 views
3

我和西蒙在this post有同樣的問題。Ajax重排序列表不能拖動

他發現了某種解決方案,但它不適用於我。請,有人能解釋我在這個答案中發生了什麼,或者給我建議一些其他的東西。

PS:有一個example on the asp.net site不完全一樣的方式工作,我的重新排序列表...(點擊查看演示)

是這裏建議增加這幾行到web.config中的解決方案:

<httpHandlers> 

    <add path="ScriptResource.axd" verb="GET,HEAD" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/> 

</httpHandlers> 

也許我只是需要改變一些東西,使其工作......但我不知道是什麼。例如,我不知道ScriptResource.axd應該是什麼。

我的代碼:.aspx文件

<%@ Page Title="" Language="C#" MasterPageFile="~/editor/editor_template.Master" AutoEventWireup="true" CodeBehind="menuEditor.aspx.cs" Inherits="WebPageEditor.editor.menuEditor" %> 

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> 
    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"> 
</asp:ScriptManager> 

    <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 

    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
      DeleteMethod="DeleteMenu" InsertMethod="InsertMenu" SelectMethod="SelectMenu" 
      TypeName="WebPageEditor.editor.MenuSourceManager" UpdateMethod="UpdateMenu" 
      > 
      <DeleteParameters> 
       <asp:Parameter Name="ID" Type="Int32" /> 
      </DeleteParameters> 
      <InsertParameters> 
       <asp:Parameter Name="name" Type="String" /> 
       <asp:Parameter Name="url" Type="String" /> 
       <asp:Parameter Name="order" Type="Int32" /> 
      </InsertParameters> 
      <UpdateParameters> 
       <asp:Parameter Name="ID" Type="Int32" /> 
       <asp:Parameter Name="name" Type="String" /> 
       <asp:Parameter Name="url" Type="String" /> 
       <asp:Parameter Name="order" Type="Int32" /> 
      </UpdateParameters>    
     </asp:ObjectDataSource> 

     <asp:ReorderList ID="ReorderList1" runat="server" AllowReorder="True" 
      DataSourceID="ObjectDataSource1" PostBackOnReorder="False" 
      ShowInsertItem="True"  SortOrderField="order" DataKeyField="ID" 
      ItemInsertLocation="Beginning"> 

      <ItemTemplate> 
      <div class="menuEditor"> 
      &raquo; <%# Eval("name") %> 
      <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Edit">LinkButton</asp:LinkButton> 
      </div>    
      </ItemTemplate> 

      <DragHandleTemplate> 
       <img src="ico/moveHandle_ico.gif" 
       alt='<asp:Literal ID="Literal1" runat="server" Text="<%$ Resources: editorLocalization, ME_moveHandleTT %>" />' 
       style="cursor:move; width:35px;" /> 
      </DragHandleTemplate> 
      <ReorderTemplate> 
      <asp:Panel runat="server" /> 

      </ReorderTemplate> 

      <InsertItemTemplate> 
       <asp:Panel ID="panel1" runat="server" DefaultButton="Button1"> 
            <asp:TextBox ID="TextBox1" runat="server" Text=' <%# Bind("name") %>' ValidationGroup="add" /> 
            <asp:Button ID="Button1" runat="server" CommandName="Insert" Text="Add" ValidationGroup="add" /> 
            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ValidationGroup="add" 
             ErrorMessage="Please enter some text" ControlToValidate="TextBox1" /> 
           </asp:Panel> 
      </InsertItemTemplate> 

      <EditItemTemplate> 
      <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("name") %>' ValidationGroup="edit" /> 
       <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("url") %>' ValidationGroup="edit" /> 
        <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("order") %>' ValidationGroup="edit" /> 
        <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Update">LinkButton</asp:LinkButton> 

      </EditItemTemplate> 

     </asp:ReorderList>   



    </ContentTemplate> 
    </asp:UpdatePanel> 




</asp:Content> 

背後

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.IO; 

namespace WebPageEditor.editor 
{ 

    public class MenuSourceManager 
    { 
     public static List<MenuItem> menuItems; 

     #region DataBindMethods 
     //[System.ComponentModel.DataObjectMethod(System.ComponentModel.DataObjectMethodType.Select)] 
     public List<MenuItem> SelectMenu() 
     {    
      return menuItems; 
     } 

     public void UpdateMenu(int ID, string name, string url, int order) 
     { 
      menuItems[ID].Name = name; 
      menuItems[ID].Url = url; 
      menuItems[ID].Order = order;    
     } 

     public void InsertMenu(string name, string url, int order) 
     { 
      menuItems.Add(new MenuItem(name, url, order, menuItems.Count)); 
     } 

     public void DeleteMenu(int ID) 
     { 
      menuItems.RemoveAt(ID); 
     } 
     #endregion 
    } 

    public class MenuItem 
    { 
     public MenuItem(string name, string url, int order, int ID) 
     { 
      Name = name; Url = url; Order = order; this.ID = ID; 
     } 

     public string Name { get; set; } 
     public string Url { get; set; } 
     public int Order { get; set; } 
     public int ID { get; set; } 
    } 
} 

代碼中,我的數據加載到從Page_Load事件列表集合,但工作正常。數據綁定也適用。問題在於項目無法重新排序 - 在重新排序期間,排序值不會更改,列表不會更新。

+0

發佈您的代碼。 – TheGeekYouNeed 2010-09-29 13:45:45

+0

如果我們能夠看到您的代碼,那麼解決您的問題會容易得多... – Patricia 2010-09-29 13:47:30

+0

以下是代碼。 – Machta 2010-09-29 14:35:16

回答

0

我決定不依賴於微軟和浪費我的時間去調整這個控制,當然,首先要做到這一點。

所以我自己創建了控制。它有一些不足之處(例如,它完全適用於兼容性視圖或更高版本的IE),並且與Ajax控件相比,它肯定不太靈活,但對我而言,這足夠完美。

對於那些好奇的結果,這裏是一個小演示:http://machta.aspone.cz/editor/menuEditor.aspx

用戶名:machta密碼

:123456

你離開頁面後更改保存(或之後重新加載它)。您可以在這裏看到結果:http://machta.aspone.cz/editor/src/home.aspx

2

與重排列表標籤

OnItemReorder="ReorderList1_ItemReorder" 

上的代碼添加這個事件現在後面添加以下代碼:

protected void ReorderList1_ItemReorder(object sender, AjaxControlToolkit.ReorderListItemReorderEventArgs e) 
     { 
//write your logic here to sort order change. 
} 
+0

我認爲這個事件是在你將元素放入列表中後執行的(在執行重新排序之後),所以不幸的是我沒有幫助。重新排序根本不會發生,並不是它只是做了一些奇怪的事情或返回錯誤的值......它的行爲就像從來沒有設計過重新排序。我的問題可能是我的控件錯過了一些應該執行拖放操作的客戶端腳本。 – Machta 2010-10-10 12:25:12

相關問題