【问题标题】:Storing records in a dropdownlist from DB without using LINQ Data source在不使用 LINQ 数据源的情况下将记录存储在 DB 的下拉列表中
【发布时间】:2012-04-06 23:08:52
【问题描述】:

我有一个舞蹈学院网站,用户可以在其中注册和添加/删除舞蹈课程。

在网页中放置特定舞蹈,对于特定用户,下拉列表显示她注册的舞蹈。

现在我想从列表中删除其中一个舞蹈。

所以我将从表格和下拉列表中删除该行。问题是每次 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"/>

【问题讨论】:

  • context 在两段代码中是否是同一个实例?在标题中不使用 LINQ 数据源是什么意思?这是一个要求,是它失败的地方吗?您的代码看起来应该没问题。

标签: c# asp.net linq


【解决方案1】:

正如您的问题所说,您希望访问记录而不将其存储在 Linq 中。

所以下面一个可能是你的替代方案。

首先将数据库中的所有数据存储到,比如说List&lt;NameIDPair&gt;

NameIDPair 可能是这样的:

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);
}

那么对于dropTheDance,可以调用delete存储过程来删除同样的...

希望这会有所帮助...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 2021-08-22
    • 1970-01-01
    相关资源
    最近更新 更多