c# - DropdownList.selectedIndex 始终为 0(是的,我有 !isPostBack)

标签 c# asp.net drop-down-menu postback

(向下滚动到帖子底部以查找解决方案。)

得到一个 asp.net 页面,其中包含一个 数据表。在这个数据表里面,有 是一个模板,包含 下拉列表和每次 数据列表中填充了一个项目,一个 ItemCreatedCommand 被调用。这 itemCreatedCommand 负责 数据绑定(bind)下拉列表。

我觉得问题出在这里 我正在使用 ItemCreatedCommand 来 填充它 - 但奇怪的事情 如果我选择“绿色”颜色, 该页面将自动回发,我会 看到下拉菜单仍然在 颜色为绿色,但在尝试使用时 它是 SelectedIndex,我总是得到 0...

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* 

我已经缩小了代码范围 查看,但你仍然可以看到什么 我正在尝试做 :) 原因 为什么我这样做,而不是声明 颜色的数据源直接 i aspx-page,是我需要运行一个 测试 if(showColors),但我不想 用代码弄乱 html 页面 我觉得应该在代码中 后面的文件。

编辑:在尝试改变之后 SelectedIndexChange - 我有一个 现在我脑子里的“逻辑”困惑- 我如何改变里面的元素 数据表?因为,据我所知——我 没有办法检查哪一个 数据列表中的项目 特定的下拉列表属于... 或者?我会尝试一些方法 看看我最终得到什么 ;) 但是做 请发表您对此的看法 问题 :)

解决方案:

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

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

最佳答案

当DataList为数据绑定(bind)时,AutoPostBack尚未处理,即ItemCreated事件中的值仍为原始值。

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

关于c# - DropdownList.selectedIndex 始终为 0(是的,我有 !isPostBack),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/312735/

相关文章:

c# - 如何访问当前开发服务器中 Controller 中的Images文件夹?

c# - 如果一个线程正在等待 console.readline 线程是否被挂起?

javascript - ASP.Net 模态页面代码未触发

javascript - 为什么 HTML/Javascript 按钮会弄乱我的 CSS 下拉菜单?

mysql - 使用 GroceryCrud 自定义下拉菜单?

c# - Nunit 测试项目中缺少 System.Web.Http 方法

javascript - 如何将 C# 使用的日期时间格式字符串转换为 moment.js 使用的格式?

javascript - 从服务器端获取 JQuery Chosen 的选择值?

c# - 如何防止单选按钮进行多项选择?

jquery - 下拉选择的背景图片更改