用模版列放置一个DropDownList,希望动态变换:如,其中一行选1,那其他行的DropDownList显示2。
代码如下:
private void MaterialGrid_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)  
{
DropDownList ddl = e.Item.FindControl("ddlMainSubstitute") as DropDownList;
ddl.SelectedIndexChanged += new EventHandler(DDL_SelectedIndexChanged);
} }
void DDL_SelectedIndexChanged(object sender,EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
DataGridItem dgi = (DataGridItem)ddl.Parent.Parent;
if(ddl.SelectedItem.Value == "1")
{
foreach(System.Web.UI.WebControls.DataGridItem oItem in MaterialGrid.Items)
{
DropDownList ddl2 = oItem.FindControl("ddlMainSubstitute") as DropDownList;
if(oItem!=dgi)
ddl2.Items.FindByValue("2").Selected = true;
}
}
}报错:DropDownList不能多选ITEMS!求高手解决方法!

解决方案 »

  1.   

    to: swordragon(古道热肠)   语言上没有问题,已经跟踪调试过,选择的那行程序并没有执行 if(oItem!=dgi)下的代码。  很可能是整个列的DropDownList都被试为同一个控件了!  曾想用两个DropDownList,选一的,隐藏二,选二的隐藏一,但总感觉不好!
      
    期待高手解决!
      

  2.   

    那是因为你选中默认值是充分了,给你个方法
    public static void SelectedSingleItem(System.Web.UI.WebControls.DropDownList list,string sValue ) 
    {
    foreach( ListItem item in list.Items )
    {
    if( item.Value == sValue )
    {
    item.Selected = true;
    }
    else
    {
    item.Selected = false;
    }
    }
    }
    然后把
    if(oItem!=dgi)
    ddl2.Items.FindByValue("2").Selected = true;
    改为
    if(oItem!=dgi)
    SelectedSingleItem(ddl2,"2");
    就可以了也可以参考版主的一个dropdownlist的例子
    http://www.cnblogs.com/lovecherry/archive/2005/03/25/125525.html