一给就是100分: 如何动态增加控件

sljz 2007-05-31 04:51:28
现在页面上有个按钮,还有一个选择(文本框、多选),希望能点击后,增加一个控件(根据选择),再次点击按钮,就再增加一个控件,用户填写后,将数据逐条存入数据库。
...全文
870 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunbird69 2007-06-01
  • 打赏
  • 举报
回复
鎬庝箞鍔炴晥鐜?楂樺憿
shilei831115 2007-06-01
  • 打赏
  • 举报
回复
花花绿绿的 不知道 搂住做成了没有
jxdyzwh 2007-06-01
  • 打赏
  • 举报
回复
用javascript实现
xiaoqhuang 2007-06-01
  • 打赏
  • 举报
回复
添加控件方法 AddControls(int count)

用viewstate保存控件个数,page_load调用 AddControls(viewstate[个数])

添加按钮 调用 AddControls(1),添加一控件,并更改viewstate的值+1

这样postback可以保存控件状态

保存时,遍历控件外层容器。

我动态添加的一个用户控件里再动态添加N个用户控件都行
sanmao198 2007-06-01
  • 打赏
  • 举报
回复
/// <summary>
/// 创建一个多行文本框
/// </summary>
/// <param name="controlID"></param>
/// <param name="value"></param>
/// <param name="isChecked"></param>
/// <returns></returns>
public static HtmlTextArea CreateTextAreaControl(string controlID,string width,int rows,string value)
{
HtmlTextArea textArea = new HtmlTextArea();
textArea.ID = controlID;
textArea.Style["width"] = width;
textArea.Rows = rows;
textArea.Value = value;
textArea.EnableViewState = true;
return textArea;
}

/// <summary>
/// 创建一个复选框控件
/// </summary>
/// <param name="controlID"></param>
/// <param name="value"></param>
/// <param name="isChecked"></param>
/// <returns></returns>
public static HtmlInputCheckBox CreateCheckBoxControl(string controlID, string value, bool isChecked)
{
HtmlInputCheckBox checkBox = new HtmlInputCheckBox();
checkBox.ID = controlID;
checkBox.Value = value;
checkBox.Checked = isChecked;
checkBox.EnableViewState = true;
return checkBox;
}

/// <summary>
/// 创建一个单选框控件
/// </summary>
/// <param name="controlID"></param>
/// <param name="value"></param>
/// <param name="isChecked"></param>
/// <returns></returns>
public static HtmlInputRadioButton CreateRadioButtonControl(string selectGroup, string controlID, string value, bool isChecked)
{
HtmlInputRadioButton radioButton = new HtmlInputRadioButton();
radioButton.Name = selectGroup;
radioButton.ID = controlID;
radioButton.Value = value;
radioButton.Checked = isChecked;
radioButton.EnableViewState = true;
return radioButton;
}
  • 打赏
  • 举报
回复
. ┌──┐
│顶你│ ╭───────╮
 └──┘  ┏━━━━━━━┓ │ 既然有分, │
  ┏┓  ┏┫    |||┣┓∠ 这贴就顶了 │
  ┣┫  ┗┫━━ ┃ ━━┣┛ ╰───────╯
┏┳┫┣┳┓ ┃ ━━━━━ ┃
┃    ┃ ┗━━━┳━━━┛
┗━━━━┻━━━━▇▇▇┛ ()000o
          ┃ ┃  (````)
          ┃ ┃   )``/
          ┛ ┗━━(__/
叶子 2007-06-01
  • 打赏
  • 举报
回复
用JS脚本
老郭20130824 2007-06-01
  • 打赏
  • 举报
回复
不要刷新,用Ajax+XSL生成
ckpckphaha 2007-06-01
  • 打赏
  • 举报
回复


要想保存那个动态增加的控件,不至于一刷就没了。
请使用 viewstate
Jeremiah 2007-05-31
  • 打赏
  • 举报
回复
Panel[] B = new Panel[5];
RadioButton[] A = new RadioButton[5];


for (int j = 0; j < B.Length; j++)
{
B[j] = new Panel();
B[j].Visible = true;
B[j].ID = j.ToString();
B[j].Attributes.Add("question", j.ToString());
for (int i = 0; i < A.Length; i++)
{
A[i] = new RadioButton();
A[i].Text = i.ToString();
A[i].Visible = true;
A[i].GroupName = j.ToString();



B[j].Controls.Add(A[i]);
}
PH1.Controls.Add(B[j]);
}
鑷繁鐓х潃鏀瑰惂.
JavaProgramers 2007-05-31
  • 打赏
  • 举报
回复
This is an examples at My Blog:http://blog.csdn.net/javaprogramers/archive/2007/04/26/1585661.aspx
Love_My 2007-05-31
  • 打赏
  • 举报
回复
CSDN 鏈€杩戠帺涔辩爜娴佷箞?
杩欎箞澶氫贡鐮?.


Asp.net 瑕佸姩鎬佸鍔犵殑鎺т欢鑳芥墽琛屽姩浣? 蹇呴』瑕佸湪绌洪棿鎵ц鍔ㄤ綔鍚庣綉椤典笂鏈夐偅绌洪棿
鎵€浠ュ繀椤昏鍐峫oad鍐欐槑绌洪棿瀛樺湪
xtra6714 2007-05-31
  • 打赏
  • 举报
回复
lz淇¤獕鍊煎お浣
amandag 2007-05-31
  • 打赏
  • 举报
回复
傻一点,将就用
//aspx

<form id="Form1" method="post" runat="server">
<asp:button id="Button1" runat="server" Text="Button"></asp:button><asp:radiobuttonlist id="RadioButtonList1" runat="server" RepeatDirection="Horizontal" AutoPostBack="True">
<asp:ListItem Value="1">多选</asp:ListItem>
<asp:ListItem Value="2">文本</asp:ListItem>
</asp:radiobuttonlist>
<asp:PlaceHolder id="PlaceHolder1" runat="server"></asp:PlaceHolder></form>


//aspx.cs
private void Page_Load(object sender, System.EventArgs e)
{
if(ViewState["IDs"] != null)
{
string [] IDs = ViewState["IDs"].ToString().Split(',');
foreach(string temp in IDs)
{
Control t;
if (temp.StartsWith("c") == true)
{
t = new CheckBox();
}
else
{
t = new TextBox();
}
t.ID = temp;
this.PlaceHolder1.Controls.Add(t);
}
}
}
private void Button1_Click(object sender, System.EventArgs e)
{
AddControls();
}

private void RadioButtonList1_SelectedIndexChanged(object sender, System.EventArgs e)
{
AddControls();
}

public void AddControls()
{
Control t;

if(RadioButtonList1.SelectedValue == "1")
{
t = new CheckBox();
t.ID = "chk" + Convert.ToInt32(ViewState["count"]);
}
else
{
t = new TextBox();
t.ID = "txt" + Convert.ToInt32(ViewState["count"]);
}
ViewState["count"] = Convert.ToInt32(ViewState["count"]) + 1;
if(ViewState["IDs"] != null)
ViewState["IDs"] = ViewState["IDs"].ToString() + "," + t.ID;
else
ViewState["IDs"] = t.ID;
this.PlaceHolder1.Controls.Add(t);
}
kkun_3yue3 2007-05-31
  • 打赏
  • 举报
回复
定义一个全局List,
按钮事件里添加控件,
取值时,用ASP的办法取,Request["控件ID"]

参考
动态添加的控件如何取其值
http://community.csdn.net/Expert/TopicView3.asp?id=5357067
real52525 2007-05-31
  • 打赏
  • 举报
回复
在OnInit中重载
showrock 2007-05-31
  • 打赏
  • 举报
回复
是可以的,我试过才贴的!
amandag 2007-05-31
  • 打赏
  • 举报
回复
有点思路,但要做的效率高不是那么容易
HarleyTung 2007-05-31
  • 打赏
  • 举报
回复
foreach (Control c in Page.Controls)
{
foreach (Control child in c.Controls)
{
if (child is TextBox)
{
TextBox tb = (TextBox)child;
if (tb.ID != "txtCount" && tb.Text!=string.Empty)
{
Response.Write("<script>alert('"+tb.Text+"')</script>");
}

}
}
}

好像可以
凤凰涅檠 2007-05-31
  • 打赏
  • 举报
回复
不要看我,路人!
加载更多回复(11)
项目名称:高仿QQ2013通讯DEMO-10.30更新 版本号:10.30 最新版本 下载内容: (C#)CC2013局域网通讯源码一份, 可引用至工具箱最新版CSkin.dll-10.30版本界面库一份。 界面库更新说明: CC2013-10.30 1.由于SkinForm名字太多人使用,界面库命名正式改为CSkin.dll,官网www.cskin.net。 2.SkinTabControl标签中添加菜单箭头,可点击展开菜单。 3.SkinTabControl添加标签关闭按钮。 4.修复部分中文乱码问题。 5.优化好友列表右键菜单。 6.将窗体自定义系统按钮改为集合模式,可添加无数个自定义系统按钮。自定义系统按钮事件中可以 e.参数 来判断。 7.增加360安全卫士-DEMO案例。 8.增加SkinAnimatorImg件,用于支持位图动画的播放。如360的动态logo。 9.各种细节BUG优化。 CC2013-10.11 1.添加SkinTabControlEx,加入更加自定义的美化属性和动画效果。 2.添加SkinAnimator,通用动画件。 3.添加Html编辑器件 4.修复SkinButton图标和文本相对位置的BUG CC2013-9.26 1.优化好友列表CPU占用 2.好友列表加入好友登录平台属性:安卓 苹果 WEBQQ PC 3.优化标题绘制模式,新添标题绘制模式属性。 4.新添标题偏移度属性。 5.加入圆形进度条件:ProgressIndicator。 CC2013-9.5.2 1.优化截图件,截图工具栏加入新功能。 2.解决个人信息卡和天气窗体显示后不会消失的问题。 3.各种细节BUG优化。 CC2013-9.5.1 1.解决贴边左右隐藏的BUG。 2.解决窗体点击事件不能触发的问题。 3.优化SkinButton继承父容器背景色的代码。 4.解决SkinButton异常错误。 CC2013-9.3 1.好友列表右键菜单没反应问题。 2.新增美化件SkinDatagridview。 3.密码软件盘回删不了文字问题。 4.双击窗体最大化,最大化后再双击恢复原大小,(win7)。 5.部分细节调优。 实现功能: 1.界面库中多达25个自定义换肤件,让每个件设设属性就能达到你想要的效果,支持图片换肤和色调绘制。 2.四边阴影,毛边效果,可以设置阴影宽度和阴影颜色,支持所有系统。 3.拥有密码键盘输入,防护更贴心。 4.8种圆角窗体模式供你选择,淋漓尽致,润滑如圆。 5.登录主界面后,有登陆提示窗,提示上次登录的城市和时间。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部渐变:上下左右方均可实现,渐变皮肤。 9.皮肤拖拉方向:可以选择皮肤在拉伸的时候,粘着哪一边拖拉。 10.GDI+界面重绘,处理消息机制,3种移动模式和拉伸是否启用只需要设置一个属性的事就可以解决。 11.界面渐变闪现和闪退:不再像平凡的突然出现,采用API渐变机制,渐渐出现和消失,win7系统下还有动态缩小至任务的效果。 12.完美好友列表,可添加上千好友,不卡不掉线,还可以拖动好友到其他分组。 13.好友悬浮至头像可以查看详细资料卡。 14.窗口可调渐变后透明度:让窗体看起来更像是Vista玻璃窗体风格。 15.聊天窗口可发送图片,大文件,表情,还有震动。 16.按钮件背景色拥有继承窗体背景主色调的功能,让整体色调保持一致。 17.更是有和如出一辙的扣扣截图。仿真度也达到100%,完美修复所有已知BUG。 18.聊天窗口,可以调字体颜色和字体样式等多项功能。 20.SkinLabel与SkinButton件字体与窗体标题可以根据背景色暗亮度自动调节字体为黑还是白。 21.MessageBox提示框的美化,并继承调用窗口的色调与背景,MessageBox可所谓已达到帅气的不能再帅气的境界了。 22.天气皮肤自动变,所有窗体根据当地天气自动决定皮肤背景,CC最帅气功能之一。 23.个人资料卡及聊天窗体拥有动态CC秀展示。 24.主界面拖动换肤的同时,所关联的子窗体皮肤也会跟着变。 25.多线程大文件传输功能,支持无上限大文件传输,有进度条显示进程度。 26.界面库已封装了大图取主色调,颜色判断暗亮等多项功能。 27.如果你觉得获取天气让你的登录太慢不想要的话,注释相关调用方法即可快速登录。 界面库交流群:306485590 本人QQ:345015918 注意: Demo版不包括更新,为方便用户查看和使用属性等方法,dll只轻微加密。想反编译的就不要尝试了,里面有上百个类,改错改到你哭。 介意购买正版,永久更新配源码。 看截图或者想购买商业版的用户请访问以下地址: http://www.51aspx.com/code/TotalLikeQQ2013 特权:购买商业版的用户,有权利享有最快的更新服务,第一时间将最新版本的dll源码送到你手上。 使本项目源码或本项目生成的DLL前请仔细阅读以下协议内容,如果你同意以下协议才能使用本项目所有的功能,否则如果你违反了以下协议,有可能陷入法律纠纷和赔偿,作者保留追究法律责任的权利。 1、你可以在开发的软件产品中使用和修改本项目的源码和DLL,但是请保留所有相关的版权信息。 2、不能将本项目源码与作者的其他项目整合作为一个单独的软件售卖给他人使用。 3、不能传播本项目的源码和DLL,包括上传到网上、拷贝给他人等方式。 4、以上协议暂时定制,由于还不完善,作者保留以后修改协议的权利。 时间:2013-7-5 作者: 乔克斯 请保留以上版权信息,否则作者将保留追究法律责任。

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧