2012-01-19 9 views
-1

.NET WebフォームのページでListBoxとjQueryを使用して項目を並べ替えることができます。私はいくつかの項目を選択し、それらをループして自分のデータベースに保存します。アイテムを並べ替える順番を保存したいのですが、動作させることができません。私の分離コードが表示されます。リストボックスの項目をソート順で保存できません

protected void session_DetailsView_ItemUpdating(object sender, DetailsViewUpdateEventArgs e) 
    { 
     panel_SqlDataSource.Delete(); 
     ListBox panel_ListBox = session_DetailsView.FindControl("panel_ListBox") as ListBox; 
     int so = 0; 
     for (int i=0; i < panel_ListBox.Items.Count; i++) 
     { 
      if (panel_ListBox.Items[i].Selected == true) 
      { 
       so++; 
       panel_SqlDataSource.InsertParameters["presenterID"].DefaultValue = panel_ListBox.Items[i].Value; 
       panel_SqlDataSource.InsertParameters["sortOrder"].DefaultValue = so.ToString(); 
       panel_SqlDataSource.Insert(); 
      } 
     } 
    } 
+0

、あなたがしなければならない、一瞬のためのデータベースを忘れ起こっていることが起こっているかどうかを判断するために出力をトレースしてください。その後、データベースについて心配してください。 – demoncodemonkey

+1

jQueryコードも貼り付けてください... – demoncodemonkey

答えて

0

うんのでご注文は、おそらくそれは、おそらくどこかのビューステートで定義されるように、サーバー上にあることを順番に影響を与えないクライアント側で変更されています。コントロールは最初に表示されたときに戻ってくるだけです。あなたは何とか物事の順序を追跡する必要があります - それをフォーム変数などから取り出してください。

0

ASP .Netは、ListBoxの項目がクライアント側で変更されたという事実を認識していません。おそらく、jQuery.sortableメソッドを使用してリストボックス項目をソートしています。 "serialize"オプションでsortableを呼び出して、値を隠しフィールドに保存する必要があります。フォームを投稿すると、その隠しフィールドの値を読み取り、新しい注文をデータベースに保存します。サンプルのためにそう

IDS 1、2、3とオブジェクトが新しい順2、3を持っている場合は、1、このような更新/挿入メソッドを作成します。

update tbl set sortOrder = 1 where presenterId = 2 
update tbl set sortOrder = 2 where presenterId = 3 
update tbl set sortOrder = 3 where presenterId = 1 
関連する問題