(向下滚动到post的底部以找到解决方案。)
有一个asp.net页面,其中包含一个数据表。在此datalist中,有一个包含下拉列表的模板,每当datalist中填充一个项时,都会调用一个ItemCreatedCommand。itemCreatedCommand负责对下拉列表进行数据绑定。
我想问题就在这里,我用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* 我已经缩小了一些代码以供查看,但您仍然可以看到我想要做的事情:)我这么做的原因,而不是直接为颜色声明数据源( 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;
}发布于 2008-11-23 17:28:09
当DataList被数据绑定时,AutoPostBack还没有被处理,即ItemCreated事件中的值仍然是原始值。
您需要处理下拉控件的SelectedIndexChange事件。
发布于 2008-11-23 19:10:11
关于你的第二个问题:
我建议您从下拉列表中删除AutoPostBack,添加一个“更新”按钮,并更新按钮Click事件中的数据。
该按钮可以保存命令和CommandArgument值,因此很容易与数据库记录相关联。
发布于 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
https://stackoverflow.com/questions/312735
复制相似问题