none
动态加载控件的问题 RRS feed

  • 问题

  • 动态加载一个控件后,如何找到该控件,如我动态加载了5个panel控件,每个panel控件中都有两个dropdownlist控件,如何查找到这两个控件呢?
    2009年8月28日 3:56

答案

  • DropDownList DropDownList1 = (DropDownList)Panel1.FindControl("DropDownList1"); // DropDownList1 是你 DropDownList控件的ID
    DropDownList DropDownList2 = (DropDownList)Panel1.FindControl("DropDownList2");

    你还可以通过,下面的方式获取

    DropDownList DropDownList1 = (DropDownList)Panel1.Controls[0];
    DropDownList DropDownList2 = (DropDownList)Panel1.Controls[1];

    知识改变命运,奋斗成就人生!
    • 已建议为答案 mldark 2009年8月28日 5:06
    • 已标记为答案 ysyy 2009年8月28日 6:12
    2009年8月28日 4:36
    版主

全部回复

  • 通过 FindControl 找到 Panel 再通过 Panel.FindControl 找到 DropDownList
    知识改变命运,奋斗成就人生!
    2009年8月28日 4:20
    版主
  • 说错了,只有一个panel,动态添加dropdownlist控件,Panel1.FindControl("??")里面如何写
    2009年8月28日 4:33
  • DropDownList DropDownList1 = (DropDownList)Panel1.FindControl("DropDownList1"); // DropDownList1 是你 DropDownList控件的ID
    DropDownList DropDownList2 = (DropDownList)Panel1.FindControl("DropDownList2");

    你还可以通过,下面的方式获取

    DropDownList DropDownList1 = (DropDownList)Panel1.Controls[0];
    DropDownList DropDownList2 = (DropDownList)Panel1.Controls[1];

    知识改变命运,奋斗成就人生!
    • 已建议为答案 mldark 2009年8月28日 5:06
    • 已标记为答案 ysyy 2009年8月28日 6:12
    2009年8月28日 4:36
    版主
  • 如果DropDownList1 和DropDownList2 得内容一样,如都是:
    DropDownList1 的值:          DropDownList2 的值
       1                                       1
       2                                       2
       3                                       3
    选中DropDownList1 的值2,则DropDownList2 中只剩下1,3.如果选中DropDownList1 的值1,则DropDownList2 中只剩下2,3,这样改如何做呢?
    2009年8月28日 5:30
  • 说错了,只有一个panel,动态添加dropdownlist控件,Panel1.FindControl("??")里面如何写

    您好,如果是动态添加的,请根据实际情况可以考虑采用遍历子控件的方式,例如:
    foreach(Control control in Panel.Controls)
    {
         DropDownList m_DropDownList = control as DropDownList;
        if(m_DropDownList != null)
        {
              ......
         }
    }
    2009年8月28日 5:30
    版主
  • DropDownList1 选择后清掉 DropDownList2 对应项, 用 js, 后台都可以写
    知识改变命运,奋斗成就人生!
    2009年8月28日 5:37
    版主
  • 我是这样写的:
              
                DropDownList dropdownlist1 = sender as DropDownList;
                DropDownList dropdownlist2 = (DropDownList)Panel1.Controls[10];
                dropdownlist2.Items.Remove(dropdownlist1.SelectedValue);
    运行后如果第一次选中DropDownList1 的值2,则DropDownList2 中只剩下1,3,但是第二次选中DropDownList1 的值1,则DropDownList2 中只剩下3,为什么,如何修改呀?
    2009年8月28日 5:47
  • 因为 2 这个选项已经在你第一次选择时移除了,所以只有 3, 要么加上1 , 要么重新添加 1 2 3, 添加判断一下,不添加 DropDownList1 选中项
    知识改变命运,奋斗成就人生!
    2009年8月28日 5:53
    版主
  • ok.........谢谢大哥
    2009年8月28日 6:12
  • 还有个问题,如果动态加载了过个控件,如何确定你选择的是哪一个dropdownlist,如添加了:
    dropdownlist10                 dropdownlist20
    dropdownlist11                 dropdownlist21
    dropdownlist12                 dropdownlist31
    dropdownlist13                 dropdownlist33
    如果选择了dropdownlist12  ,通过(DropDownList)Panel1.Controls[??]如何寻找,它是动态的??
    2009年8月28日 7:34
  • 选择某个 DropDownList 时把这个控件的ID记到一个变量中,这样就知道了



    知识改变命运,奋斗成就人生!
    2009年8月28日 7:45
    版主
  • 如何写哟,id是动态的
    2009年8月28日 7:46
  • ????????
    2009年8月28日 8:10
  • DropDownList 的 SelectedIndexChanged 事件中

    DropDownList dropdownlist1 = sender as DropDownList;
    dropdownlist1.ClientID 就是你要的


    知识改变命运,奋斗成就人生!
    2009年8月28日 8:14
    版主
  • 如果DropDownList1 和DropDownList2 得内容一样,如都是:
    DropDownList1 的值:          DropDownList2 的值
       1                                       1
       2                                       2
       3                                       3
    选中DropDownList1 的值2,则DropDownList2 中只剩下1,3.如果选中DropDownList1 的值1,则DropDownList2 中只剩下2,3,这样写:
                DropDownList dropdownlist2 = (DropDownList)Panel1.Controls[10];
                //清除dropdownlist2的值
                 dropdownlist2.Items.Clear();
                //将dropdownlist1得值赋值给dropdownlist2的值
                for (int i = 0; i < dropdownlist1.Items.Count; i++)
                {
                    dropdownlist2.Items.Add(dropdownlist1.Items[i].ToString());
                }
                //在dropdownlist2中删除dropdownlist1中选择的
                dropdownlist2.Items.Remove(dropdownlist1.SelectedValue);
    可以实现只有一组控件,如何修改才能实现动态添加多组后,每组都能实现上面的功能???
    2009年8月28日 8:28
  • 你要设计一套机制,简单的说就是找到所有已选中的值,在添加项时过滤这些值,最好用一个方法来实现



    知识改变命运,奋斗成就人生!
    2009年8月28日 8:32
    版主
  • 现在的问题是 DropDownList dropdownlist2 = (DropDownList)Panel1.Controls[??];不知道具体的dropdownlist2 是哪个
    2009年8月28日 8:35
  • 你选择是从左到右依次来的吗?
    知识改变命运,奋斗成就人生!
    2009年8月28日 8:36
    版主
  • 恩,如个dropdownlist1中选中了一个值,在右边的dropdownlist2中相应的就去掉这个值
    2009年8月28日 8:40
  • !!ssa
    学习,学习,再学习..........
    2009年8月28日 8:57
  • 谢谢大哥,解决了
    学习,学习,再学习..........
    2009年8月28日 9:14
  • 不客气~~~
    知识改变命运,奋斗成就人生!
    2009年8月28日 9:15
    版主