在下拉框选择事件里添加自动生成控件的代码就可以了~
// 自动生成label控件函数。
public Label ShowLabel(string b,int c,int d,Color f)
{
System.Windows.Forms.Label labelshow=new Label();
labelshow.Text=b;

labelshow.Width=112;
labelshow.BorderStyle=System.Windows.Forms.BorderStyle.FixedSingle;
labelshow.Top=c;
labelshow.Left=d;
labelshow.Height=16;
labelshow.ForeColor=f;
return labelshow; }

解决方案 »

  1.   

    现在我的做法是 把下拉框的值 放到了一个表中 当作外键,每次变化都从数据库中把结构读出来结构如下
    ID
    BusinessCategoryID(就是下拉框的值) 
    ItemText(需要显示的文本,如上面的城市,价格)
    ItemType (表明需要生成是文本框,还是下拉框,还是复选矿等等)
    DictCategoryID (表明如果是下拉框等需要充值的数据类型 ,文本框此项为控)主要的字段就如上面
      

  2.   

    现在我的做法是 把下拉框的值 放到了一个表中 当作外键,每次变化都从数据库中把结构读出来结构如下
    ID
    BusinessCategoryID(就是下拉框的值) 
    ItemText(需要显示的文本,如上面的城市,价格)
    ItemType (表明需要生成是文本框,还是下拉框,还是复选矿等等)
    DictCategoryID (表明如果是下拉框等需要充值的数据类型 ,文本框此项为控)主要的字段就如上面
    这个市一种做法,
    另外一种做法:如果你的种类不是太多,可以预先定义好了,然后选中值变化的时候判断该显示哪个可以用panel来组合,控制起来比较方便.
      

  3.   

    webform 忘了说,不好意思
      

  4.   

    建个表,下个ajax.dll,上网上随便找个三级联动的下拉列表的例子,改之,估计就是闪电般的速度完工
      

  5.   

    我回复的慢了,多谢大家,是webform 的页面 ,有没有好的方案啊
      

  6.   

    我是根据下拉框的变化,上数据库中得到应该生成的控件集记录
    然后把得到的DataTable,直接绑定到了GridView上
    再GridView中加入了模板列,
    再rowcreating事件中,判断需要绑定的是什么类型的控件
    再动态生成,放入到模板列中
    但是我这样做的不能满足一行2列的要求。
      

  7.   

    总结一下:用Panel是最简单的方法.强烈推荐
      

  8.   

    winform 在change那个事件里添加就行了,但是webform的,我不知道,添过,但是不好用,我就加了一个button
      

  9.   

    shweze(邵邵)你说我急死你了?呵呵
      

  10.   

    你说的不是分情况显示不同的内容吗,这不是动态显示吧,
       我认为用PANAL就可以了。
      

  11.   

    huo789(四火)的
    我觉得我不适合用,加入下拉框有100个选项。不可能去做100个div
    保存数据时在最后提交的时候我会保存。但动态生成的控件在页面刷新的时候,那些值就都会没有了。去试试panel
      

  12.   

    不知道楼主找到解决方案了没有。
    我原来实现过这样的功能,给一下我的做法:首先托放一个System.Web.UI.WebControls.PlaceHolder控件到页面上,主要用来包含要动态生成的控件,然后,在ddl下拉动态变化的时候,加入相应的实现方法。this.PlaceHolderEvent.Controls.Add(new LiteralControl("<table width=\"98%\">"));
    for(int i=0;i<dt.Rows.Count;i++)
    {
    //增加TextBox或者其它的控件
    this.PlaceHolderEvent.Controls.Add(textbox);
    }
    this.PlaceHolderEvent.Controls.Add(new LiteralControl("</table>"));可能有的控件需要js控制,可以通过 Page.RegisterStartupScript加上相应的控制。在提交的时候,对于Form中自动生成的控件,可以通过 this.Request.Form["TextBox"+i.ToString()].ToString() 获取相应的内容。如果是由js生成的,例如 更多 (更多可能由一个文本框和一个file组成),可以通过例如Request.Params.GetValues("fileTitle")得到。希望能对你有所帮助
      

  13.   

    up
    C#技术群,欢迎大家光临指导!!
    群号:26788099
      

  14.   

    感谢楼上各位xiandao82(遇见)
    的确,生成控件不难,现在我的数据结构已经建立的比较完善
    现在就是想找个比较好的解决方案能够支持我快速方便的保存修改数据。
    比较传统的方式可能是利用Table等控件生成加载。
    现在我的方案是使用的gridview,我很想找一个可以利用gridview方式解决问题的办法。如果实在不幸,我也只能用table动态加载了。
      

  15.   

    这个你用ajax加上层就可以实现的,但是代码多了点,判断多了点,我刚做了一个这样的功能的
      

  16.   

    可以自己重写文本框,让其实现一个接口,然后让其呈现在某个容器中,取的时候可以用控件的Controls属性实现枚举所有控件。具体与数据库哪些内容对应,就看你怎么实现那个接口。