ユーザーがダンス クラスを登録および追加/削除できるダンス アカデミーの Web サイトを持っています。
特定のダンスをドロップする Web ページでは、特定のユーザーに対して、ドロップダウンに登録済みのダンスが表示されます。
ここで、リストからダンスの 1 つを削除したいと思います。そのため、テーブルとドロップダウンリストから行を削除します。問題は、ユーザーがどれを選択しても、ID (インデックス) が最も小さいアイテムが削除されるたびに発生することです。ドロップダウンの DataTextField と DataValueField を間違って保存していると思います。コードは次のとおりです。
private void PopulateDanceDropDown()
{
// Retrieve the username
MembershipUser currentUser = Membership.GetUser();
var username = currentUser.UserName;
// Retrive the userid of the curren user
var dancerIdFromDB = from d in context.DANCER
where d.UserName == username
select d.UserId;
Guid dancerId = new Guid();
var first = dancerIdFromDB.FirstOrDefault();
if (first != null)
{
dancerId = first;
}
dances.DataSource = (from dd in context.DANCER_AND_DANCE
where dd.UserId == dancerId
select new
{
Text = dd.DanceName,
Value = dd.DanceId
}).ToList();
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);
}
}
問題は次の行にあります。
String strDataValueField = dances.SelectedItem.Value;
strDataValueField は常に、ドロップダウンのダンス アイテム ID のリストから最小 ID を取得します (これはデフォルトで発生します)。ユーザーが選択したダンスのIDを保持したい。