具体的说就是,我有两个ListBox第一个显示组,第二个显示人,这个窗体是父窗体用window.showModalDialog方法显示出来的,所以不能用服务器端事件,但我需要根据选中的组动态显示人员名
现在我用的方法是:
组ListBox是从数据库中取的,根据组ListBox.Count生成N个人ListBox,判断选中那个组就让对应的人ListBox.Visible=true
但是我不知怎么在服务器端动态生成控件
又怎么在客户端控件他们的显示
或有其它的方法?
谢谢各位高手了!

解决方案 »

  1.   

    window.showModalDialog为什么不能用服务器端事件?
      

  2.   

    俺帮不上忙。是不是这个意思。服务器端动态生成控件
    controName test = new controName();
    this.page.control[1].control.add(test);
    这样就会在界面显示。你也可以自定义事件方法,然后add.:-)
      

  3.   

    用2个DataGrid很容易实现你所说的功能。在《ASP.NET揭秘》第二版中就有这样的例子。
      

  4.   


    但是我要用window.showModalDialog方法所显示出的模式窗口(程序需要,谁叫我不是老板)
    所以它是无法响应服务器端的事件的,因为不能PostBack
    刚才静下来,我想到了个办法
    特与大家共享(才想出来,如果错了不要骂啊)
    在服务器端用PlaceHolder动态生成N个人ListBox,把他们放入<div>中,<div>的id值等于组ListBox的Value值并让style="display:none;",在组ListBox中加入客户端的onchange事件,用
    var str=document.getElementById("组ListBox的ID").options[document.getElementById("组ListBox的ID").selectedIndex].value;
    document.getElementById(str).style.display="block";
    让所选组的人ListBox显示出来,
    其它的就都好解决了,
    以上都还只是纸上谈兵,还未实现
    不知大家还有什么更好办法或指出我的逻辑错误,我也一定会照样给分的,
    再次谢谢以上各位
      

  5.   

    window.showModalDialog为什么不能响应服务器端事件在打开页面的<HEAD></HEAD>里加入<META http-equiv="Pragma" content="no-cache">
    <base target="_self">
      

  6.   

    使用:<asp:PlaceHolder id="ph" runat="server"\>,它是一个容器,在服务器创建控件,
    比如:TextBox txt_1=new TextBox();
    txt_1.ID="sss";
    txt_1.Text="ssss";
    ph.Controls.Add(txt_1);
      

  7.   

    谢谢 as12a(聚沙成塔) 、 luckyprg(lucky) 和以上各位朋友,window.showModalDialog确实能响应服务器端事件,(给自己一个大红脸)
    再次感谢!
      

  8.   

    不过,
    <META http-equiv="Pragma" content="no-cache">
    <base target="_self">
    这是什么意思啊?
    我查到“<META http-equiv="Pragma" content="no-cache">”有不让IE缓存数据的功能,其它的就不明白了