2010-09-29 114 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