Временный источник данных - PullRequest
1 голос
/ 31 июля 2009

У меня есть gridview, связанный с источником данных sql server. В настоящее время я перемещаю выбранные элементы в ListBox, чтобы показать выбранные записи. Я хотел бы переключиться на ReOrderList из AJAX Toolkit, чтобы иметь возможность изменить порядок выбранных элементов. К сожалению, ReorderList нужен настоящий источник данных для привязки. Как лучше всего создать временную таблицу, которую будет использовать пользователь?

Ответы [ 2 ]

0 голосов
/ 01 августа 2009

ОК, вы можете сохранить свой источник данных временного списка в viewstate. Вот грубый пример:

<asp:ScriptManager ID="SM1" runat="server"></asp:ScriptManager>

<ajaxToolkit:ReorderList ID="RList" runat="server"
    DragHandleAlignment="Left" ItemInsertLocation="End"
    AllowReorder="true" ShowInsertItem="true" PostBackOnReorder="false">
    <ItemTemplate>
        <p><%# Eval("ID") %> = <%# Eval("Name") %></p>
       </ItemTemplate>
        </ajaxToolkit:ReorderList>

        <asp:Button ID="ButtonAdd" runat="server" OnClick="ButtonClick_AddItem" Text="Add New" />

Затем в коде:

public partial class SortList : System.Web.UI.Page
{
    [Serializable]
    public class MyItem
    {
        public Guid Id { get; set; }
        public string Name { get; set; }

        public MyItem(Guid id, string name)
        {
            Id = id;
            Name = name;
        }
    }

    protected List<MyItem> MyList
    {
        get
        {
            if (ViewState["myClass"] == null)
                ViewState["myClass"] = new List<MyItem>();
            return (List<MyItem>)ViewState["myClass"];
        }
    }

    protected void AddItem(Guid id, string name)
    {
        MyList.Add(new MyItem(id, name));
        RList.DataSource = MyList;
        RList.DataBind();
    }

    protected void ButtonClick_AddItem(object sender, EventArgs e)
    {
        AddItem(Guid.NewGuid(), DateTime.Now.Ticks.ToString());
    }
}

Очевидно, вы бы заменили класс MyItem тем, что хотите сохранить, и заменили кнопку событием выбора элемента GridView. Но, надеюсь, принцип есть?

0 голосов
/ 31 июля 2009

Я не следую. ReOrderList имеет свойство DataSourceID , на которое вы можете просто указать существующий SqlDataSource. Или у вас нет элемента управления SqlDataSource?

Если нет, как вы привязываете данные к вашему GridView? Если вы привязываетесь к какому-либо объекту, то вместо этого вы можете использовать ObjectDataSource, если он реализует интерфейс IList. Возможно, имейте чтение ReorderList - привязка к DataTable , если вы вместо этого пытаетесь связать с DataTable.

...