2012-04-06 7 views
0

ダンスアカデミー用のウェブサイトを用意しています。ユーザーはダンスクラスの登録と追加/削除ができます。LINQを使用せずにDBからドロップダウンリストにレコードを保存するデータソース

特定のユーザーに対して、特定のダンスをドロップするWebページでは、ドロップダウンに登録済みのダンスが表示されます。

今、リストからダンスの1つを削除します。

したがって、テーブルから行を削除してドロップダウンリストからも削除します。問題は、ID(インデックス)が最も低いアイテムが削除されるたびに、ユーザーがどちらを選択しても問題が発生することです。

私はドロップダウンのDataTextFieldとDataValueFieldを間違って保存していると思います。誰かが私を助けてくれますか? コードは次のとおりです。

private void PopulateDanceDropDown() 
     { 



      var registereddanceList = from dd in context.DANCER_AND_DANCE 
             where dd.UserId == dancerId 
             select new 
             { 
              Text = dd.DanceName, 
              Value = dd.DanceId 
             }; 

      dances.DataSource = registereddanceList; 
      dances.DataTextField = "Text"; 
      dances.DataValueField = "Value"; 
      dances.DataBind(); 

     } 

     protected void dropthedance(object o, EventArgs e) 
     { 
      String strDataValueField = dances.SelectedItem.Value;    
      int danceIDFromDropDown = Convert.ToInt32(strDataValueField); 
      var dancer_dance = from dd in context.DANCER_AND_DANCE 
           where dd.DanceId == danceIDFromDropDown 
           select dd; 



      foreach (var dndd in dancer_dance) 
      { 
       context.DANCER_AND_DANCE.DeleteOnSubmit(dndd); 

      } 

      try 
      { 
       context.SubmitChanges(); 
      } 

      catch (Exception ex) 
      { 
       Console.WriteLine(ex); 
      } 
      PopulateDanceDropDown(); 

     } 


<asp:DropDownList ID = "dances" runat="server"> 
    </asp:DropDownList> 

<asp:Button ID="dropDance" runat="server" OnClick="dropthedance" Text="Drop Class" BackColor="Maroon" ForeColor="#FFCC99"/> 
+0

両方のコードで同じコンテキストが使用されていますか?あなたのタイトルにLINQデータソース_を使用していないとどういう意味ですか?それは要件ですか、それはどこで失敗ですか?あなたのコードはOKであるはずです。 –

答えて

0

あなたの質問は、あなたがのLINQに格納することなく、レコードにアクセスしたい言うように。

以下のように、あなたの代わりになる可能性があります。

class NameIDPair 
{ 
public NameIDPair(){} 
public string NameValue{get;set;} 
public string IDValue{get;set;} 
} 

そして、次のようにドロップダウンリストに移入:

List<NameIDPair> storeInMe = From Database 
foreach(NameIDPair pair in storeInMe) 
{ 
ListItem item = new ListItem(); 
item.Value = pair.IDValue; 
item.Text = pair.NameValue; 
ddldancesList.Items.Add(item); 
} 

次にため

まずストアデータベースからすべてのデータに、何ができるかNameIDPairList<NameIDPair>

相続人を言うことができます削除するストアドプロシージャを呼び出すことで同じものを削除することができます。

これは役に立ちます。

関連する問題