2009-07-31 11 views
1

私は、SQL Serverのデータソースにバインドされたgridviewを持っています。現在、選択した項目をListBoxに移動して、選択したレコードを表示しています。 AJAX ToolkitのReOrderListに切り替えて、選択した項目を並べ替えることができます。残念ながら、ReorderListにはバインドするための真のデータソースが必要です。ユーザーが使用する一時的なテーブルを作成するためのベストプラクティスは何ですか?一時的なデータソース

答えて

0

OK、あなたは、一時的なリストのデータソースを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()); 
    } 
} 

明らかにあなたがGridViewの選択項目イベントでボタンを保管し、交換したいものは何でもしてMYITEMクラスに置き換えます。しかし、うまくいけば原則はそこにありますか?

+0

ありがとう!私はまだ対処していないviewstateで読んできましたが、これは私が欲しいものをするべきであるように見えます。 – adamweeks

0

私は従いません。 ReOrderList has a DataSourceID propertyには、既存のSqlDataSourceをポイントできます。または、実際にはSqlDataSourceコントロールを持っていませんか?

そうでなければ、データをGridViewにどのようにバインドしていますか?何らかのオブジェクトの衝突にバインドする場合は、IListインタフェースを実装している限り、代わりにObjectDataSourceを使用できます。代わりにDataTableにバインドしようとしている場合は、おそらくReorderList - bind to DataTableの読み込みがあります。

+0

申し訳ありませんが、わかりませんでした。これは私の最初の投稿です。私は.NETの世界に戻っています。 ReorderListは、データバインドされたグリッドビューから現在選択されている項目を示すListBoXを置き換えます。 GridViewは遠ざかっていませんが、ListBoxだけがうまくいきます。 – adamweeks

+0

私は理解しています。私は助けたいと思いますが、あなたがしようとしていることはまだよく分かりません。ユーザーがGridViewで行を選択できるようにし、その項目がReorderListに表示されるようにすると言っていますか?彼らは終了し、再注文した後、何が起こりたいですか? –

+0

はい、それは私が起こりたいものです。 ReorderListを使って作業が完了したら、データをWebサービスアプリケーションに渡して計算を行い、そのデータをユーザーに返します。 (その部分は今ListBoxで動作しています) – adamweeks