首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于下拉列表,SelectedIndex始终返回值0

对于下拉列表,SelectedIndex始终返回值0
EN

Stack Overflow用户
提问于 2012-04-08 04:31:10
回答 2查看 5.8K关注 0票数 0

我在我的网页中有一个下拉列表,无论用户选择哪个项目,它总是返回0作为选择的索引。我已经使用DB查询填充了下拉列表。并且我在我的页面中填充了Page_Load方法。下面显示的代码完成指定的工作: int danceid;

代码语言:javascript
运行
复制
    protected void Page_Load(Object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            PopulateDanceDropDown();
        }

    }    

    private void PopulateDanceDropDown()
    {         
        DataTable dt = new DataTable();DataRow row = null;
        dt.Columns.Add("Did", Type.GetType("System.Int32"));
        dt.Columns.Add("DName", Type.GetType("System.String"));    
        var dancer_dance = (from dd in context.DANCER_AND_DANCE
                       where dd.UserId == dancerId
                       select new
                       {
                           Value = dd.DanceId,
                           Text = dd.DanceName

                       }).ToList();    

        foreach (var dndd in dancer_dance)
        {        
            row = dt.NewRow();
            row["Did"] = dndd.Value;
            row["DName"] = dndd.Text;
            dt.Rows.Add(row);    dances.DataSource = dt;    
            dances.DataTextField = dt.Columns[1].ToString();
        if (!IsPostBack)
        {
            dances.DataBind();
        }

    }    
    protected void changeIndex(object o, EventArgs e)
    {
        danceid = dances.SelectedIndex;
    }
    protected void dropthedance(object o, EventArgs e)
    {
        int danceIDFromDropDown = danceid;
        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);
        }
  }

在方法dropthedance中,行int danceIDFromDropDown = danceid;的值始终为0。请救救某人!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-08 05:14:43

您确定要使用索引作为ID吗?通常,您需要将数据库中的实际ID设置为DataValueField,然后就可以通过这种方式获取该值。

但我也注意到,您获取索引并将其放入indexchanged事件的变量中,然后尝试在不同的方法中使用该值。我假设danceid是这里没有显示的属性。无论如何,该值不会通过回发持久存在。不要像在桌面应用程序中那样尝试将其存储在变量中,而是尝试将EnableViewState="True“添加到下拉控件中。然后直接在提交处理程序上获取该索引。或者,如果您确实想将其存储在一个变量中,那么尝试通过将该变量的值存储在会话中或对其进行缓存来持久化该变量的值,然后在实际使用该值时从该缓存/会话变量中提取该值。

但是,更好的做法是将danceid放在listitem对象本身中。仅仅是基于项索引的in就让我不寒而栗,特别是当您从数据库中填充列表时,因为当您将一个新项添加到库中的列表中,然后尝试按名称对其进行排序时会发生什么……那么你的索引就变得毫无用处了。

票数 1
EN

Stack Overflow用户

发布于 2012-04-08 04:37:40

替换

代码语言:javascript
运行
复制
int danceIDFromDropDown = danceid;

使用

代码语言:javascript
运行
复制
int danceIDFromDropDown = dances.SelectedIndex;

这也许能行得通。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10058107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档