首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DropdownList.selectedIndex总是0(是的,我有!isPostBack)

DropdownList.selectedIndex总是0(是的,我有!isPostBack)
EN

Stack Overflow用户
提问于 2008-11-23 17:21:11
回答 4查看 18.5K关注 0票数 5

(向下滚动到post的底部以找到解决方案。)

有一个asp.net页面,其中包含一个数据表。在此datalist中,有一个包含下拉列表的模板,每当datalist中填充一个项时,都会调用一个ItemCreatedCommand。itemCreatedCommand负责对下拉列表进行数据绑定。

我想问题就在这里,我用ItemCreatedCommand来填充它--但奇怪的是,如果我选择“绿色”的颜色,页面就会自动返回,我会看到下拉列表仍然在绿色上,但是当尝试使用它是SelectedIndex时,我总是得到0.

代码语言:javascript
复制
protected void DataListProducts_ItemCreatedCommand(object
    source, DataListItemEventArgs e)

 var itemId = (String)DataListProducts.DataKeys[e.Item.ItemIndex];
 var item = itemBLL.GetFullItem(itemId); 

 var DropDownListColor = (DropDownList)e.Item.FindControl("DropDownListColor");

 //Also tried with :
 //if(!isPostBack) {

 DropDownListColor.DataSource = item.ColorList;
 DropDownList.Color.Databind();

 // } End !isPostBack)

    Label1.test = DropDownListColor.SelectedIndex.toString();
 // <- THIS IS ALWAYS 0! *grr* 

我已经缩小了一些代码以供查看,但您仍然可以看到我想要做的事情:)我这么做的原因,而不是直接为颜色声明数据源( aspx-page ),是因为我需要运行一个测试if(showColors),但是我不想用我觉得应该在后面的代码中的代码来干扰html页面。

编辑:在试图改变SelectedIndexChange之后--我现在脑子里有一种“逻辑”的混乱--我该如何改变数据表中的元素呢?因为,据我所知-我没有任何方法来检查数据表中的哪一项--这个特定的下拉列表属于.或?我将尝试几种方法,看看我最终会得到什么;)但请在这个问题上发表你的想法:)

解决方案:

要么将事件冒泡到ItemCommand,要么处理事件,获取发件人的父级(这是一个datalistItem,并在其中操作元素)。

代码语言:javascript
复制
 protected void DropDownListColor_SelectedIndexChanged(object sender, EventArgs e)
        {
            DropDownList dropDownListColor = (DropDownList)sender;
            DataListItem dataListItem = (DataListItem)dropDownListColor.Parent;

            var item = items[dataListItem.ItemIndex];
            var color = item.ItemColor[dropDownListColor.SelectedIndex];

            var LabelPrice = (Label)dataListItem.FindControl("LabelPrice");
            LabelPrice.Text = color.Price; 
        }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-11-23 17:28:09

当DataList被数据绑定时,AutoPostBack还没有被处理,即ItemCreated事件中的值仍然是原始值。

您需要处理下拉控件的SelectedIndexChange事件。

票数 9
EN

Stack Overflow用户

发布于 2008-11-23 19:10:11

关于你的第二个问题:

我建议您从下拉列表中删除AutoPostBack,添加一个“更新”按钮,并更新按钮Click事件中的数据。

该按钮可以保存命令和CommandArgument值,因此很容易与数据库记录相关联。

票数 0
EN

Stack Overflow用户

发布于 2008-11-23 21:31:12

与C#示例有关冒泡的一些MSDN链接

http://msdn.microsoft.com/en-us/library/system.web.ui.control.onbubbleevent.aspx

http://msdn.microsoft.com/en-us/library/aa719644(VS.71).aspx

http://msdn.microsoft.com/en-us/library/aa720044(VS.71).aspx

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

https://stackoverflow.com/questions/312735

复制
相关文章

相似问题

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