在下拉框选择事件里添加自动生成控件的代码就可以了~
// 自动生成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; }
// 自动生成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; }
ID
BusinessCategoryID(就是下拉框的值)
ItemText(需要显示的文本,如上面的城市,价格)
ItemType (表明需要生成是文本框,还是下拉框,还是复选矿等等)
DictCategoryID (表明如果是下拉框等需要充值的数据类型 ,文本框此项为控)主要的字段就如上面
ID
BusinessCategoryID(就是下拉框的值)
ItemText(需要显示的文本,如上面的城市,价格)
ItemType (表明需要生成是文本框,还是下拉框,还是复选矿等等)
DictCategoryID (表明如果是下拉框等需要充值的数据类型 ,文本框此项为控)主要的字段就如上面
这个市一种做法,
另外一种做法:如果你的种类不是太多,可以预先定义好了,然后选中值变化的时候判断该显示哪个可以用panel来组合,控制起来比较方便.
然后把得到的DataTable,直接绑定到了GridView上
再GridView中加入了模板列,
再rowcreating事件中,判断需要绑定的是什么类型的控件
再动态生成,放入到模板列中
但是我这样做的不能满足一行2列的要求。
我认为用PANAL就可以了。
我觉得我不适合用,加入下拉框有100个选项。不可能去做100个div
保存数据时在最后提交的时候我会保存。但动态生成的控件在页面刷新的时候,那些值就都会没有了。去试试panel
我原来实现过这样的功能,给一下我的做法:首先托放一个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")得到。希望能对你有所帮助
C#技术群,欢迎大家光临指导!!
群号:26788099
的确,生成控件不难,现在我的数据结构已经建立的比较完善
现在就是想找个比较好的解决方案能够支持我快速方便的保存修改数据。
比较传统的方式可能是利用Table等控件生成加载。
现在我的方案是使用的gridview,我很想找一个可以利用gridview方式解决问题的办法。如果实在不幸,我也只能用table动态加载了。