想要的效果:在页面上有一个textbox 输入一个数,点击button分段,根据输入的数字,动态几行生成控件,
点提交获取动态控件值。我在form_load中调用this.AddRow()想做画面重构,结果就会多出几行控件,
比如输入的数是2,点button分段生成了2行控件,输入值后
一点提交button就会成为4行问题1:怎么重构画面,才能正确,输入的值不会丢失
问题2:动态控件的取值高手们帮帮忙看看到底改怎么写?
//提交事件
protected void btnButton1_Click(object sender, EventArgs e)
{
for (int i = 0; i < TableFD.Rows.Count; i++)
{
string str1 = ((TextBox)form1.FindControl("txtStartNum" + i)).Text;
lblMsg.Text += str1;
}
}
protected void btnFenDuan_Click(object sender, EventArgs e)
{
this.AddRow(); }
#region 表格操作
private void AddRow()
{
TextBox TextBox1;
Label Label1;
DropDownList DropDownList1;
ListItem item;
int duanshu = Convert.ToInt32(txtDuanShu.Text.Trim());//要分的分段数
for (int i = 0; i < duanshu; i++)
{
TableRow tr = new TableRow();
//tr.Height = 30;
tr.Style.Add("font-size", "12px");
tr.Style.Add("text-indent", "5px");
tr.Style.Add("padding-left", "5px"); TableCell td1 = new TableCell();
//td1.Style.Add("font-size", "12px");
//td1.Style.Add("text-indent", "5px");
//td1.Style.Add("padding-left", "5px");
td1.Style.Add("background-color", "#DBEFFA");
td1.Style.Add("text-align", "center");
td1.Style.Add("width", "20%");
//td1.Width = System.Web.UI.WebControls.Unit.Parse("20%", System.Globalization.CultureInfo.InvariantCulture);
//报销范围 Label
Label1 = new Label();
Label1.Text = "报销范围:";
td1.Controls.Add(Label1); TableCell td2 = new TableCell();
//td2.Style.Add("font-size", "12px");
//td2.Style.Add("text-indent", "5px");
//td2.Style.Add("padding-left", "5px");
td2.Style.Add("width", "80%");
//td2.Width = System.Web.UI.WebControls.Unit.Parse("80%", System.Globalization.CultureInfo.InvariantCulture);
//开始数
TextBox1 = new TextBox();
TextBox1.ID = "txtStartNum" + i.ToString();
TextBox1.Width = 80;
if (i == 0)
{
TextBox1.Text = "0";
}
td2.Controls.Add(TextBox1); //开始< <= =
DropDownList1 = new DropDownList();
DropDownList1.ID = "ddlStart" + i.ToString();
item = new ListItem();
item.Text = "<";
item.Value = "<";
DropDownList1.Items.Add(item);
item = new ListItem();
item.Text = "<=";
item.Value = "<=";
DropDownList1.Items.Add(item);
item = new ListItem();
item.Text = "=";
item.Value = "=";
DropDownList1.Items.Add(item);
td2.Controls.Add(DropDownList1); //报销金额 Label
Label1 = new Label();
Label1.Text = " 报销金额 ";
td2.Controls.Add(Label1); //结束< <= =
DropDownList1 = new DropDownList();
DropDownList1.ID = "ddlEnd" + i.ToString();
item = new ListItem();
item.Text = "<";
item.Value = "<";
DropDownList1.Items.Add(item);
item = new ListItem();
item.Text = "<=";
item.Value = "<=";
DropDownList1.Items.Add(item);
item = new ListItem();
item.Text = "=";
item.Value = "=";
DropDownList1.Items.Add(item);
td2.Controls.Add(DropDownList1); //结束数
TextBox1 = new TextBox();
TextBox1.ID = "txtEndNum" + i.ToString();
TextBox1.Width = 80;
if (i == (duanshu - 1))
{
TextBox1.Text = "-1";
}
td2.Controls.Add(TextBox1); //报销比例 Label
Label1 = new Label();
Label1.Text = " 报销比例:";
td2.Controls.Add(Label1); //报销比例 TextBox
TextBox1 = new TextBox();
TextBox1.ID = "txtBXBiLi" + i.ToString();
TextBox1.Width = 80;
TextBox1.Text = "0";
td2.Controls.Add(TextBox1); //% Label
Label1 = new Label();
Label1.Text = " %";
td2.Controls.Add(Label1);
tr.Cells.Add(td1);
tr.Cells.Add(td2);
TableFD.Rows.Add(tr);
}
}
#endregion
点提交获取动态控件值。我在form_load中调用this.AddRow()想做画面重构,结果就会多出几行控件,
比如输入的数是2,点button分段生成了2行控件,输入值后
一点提交button就会成为4行问题1:怎么重构画面,才能正确,输入的值不会丢失
问题2:动态控件的取值高手们帮帮忙看看到底改怎么写?
//提交事件
protected void btnButton1_Click(object sender, EventArgs e)
{
for (int i = 0; i < TableFD.Rows.Count; i++)
{
string str1 = ((TextBox)form1.FindControl("txtStartNum" + i)).Text;
lblMsg.Text += str1;
}
}
protected void btnFenDuan_Click(object sender, EventArgs e)
{
this.AddRow(); }
#region 表格操作
private void AddRow()
{
TextBox TextBox1;
Label Label1;
DropDownList DropDownList1;
ListItem item;
int duanshu = Convert.ToInt32(txtDuanShu.Text.Trim());//要分的分段数
for (int i = 0; i < duanshu; i++)
{
TableRow tr = new TableRow();
//tr.Height = 30;
tr.Style.Add("font-size", "12px");
tr.Style.Add("text-indent", "5px");
tr.Style.Add("padding-left", "5px"); TableCell td1 = new TableCell();
//td1.Style.Add("font-size", "12px");
//td1.Style.Add("text-indent", "5px");
//td1.Style.Add("padding-left", "5px");
td1.Style.Add("background-color", "#DBEFFA");
td1.Style.Add("text-align", "center");
td1.Style.Add("width", "20%");
//td1.Width = System.Web.UI.WebControls.Unit.Parse("20%", System.Globalization.CultureInfo.InvariantCulture);
//报销范围 Label
Label1 = new Label();
Label1.Text = "报销范围:";
td1.Controls.Add(Label1); TableCell td2 = new TableCell();
//td2.Style.Add("font-size", "12px");
//td2.Style.Add("text-indent", "5px");
//td2.Style.Add("padding-left", "5px");
td2.Style.Add("width", "80%");
//td2.Width = System.Web.UI.WebControls.Unit.Parse("80%", System.Globalization.CultureInfo.InvariantCulture);
//开始数
TextBox1 = new TextBox();
TextBox1.ID = "txtStartNum" + i.ToString();
TextBox1.Width = 80;
if (i == 0)
{
TextBox1.Text = "0";
}
td2.Controls.Add(TextBox1); //开始< <= =
DropDownList1 = new DropDownList();
DropDownList1.ID = "ddlStart" + i.ToString();
item = new ListItem();
item.Text = "<";
item.Value = "<";
DropDownList1.Items.Add(item);
item = new ListItem();
item.Text = "<=";
item.Value = "<=";
DropDownList1.Items.Add(item);
item = new ListItem();
item.Text = "=";
item.Value = "=";
DropDownList1.Items.Add(item);
td2.Controls.Add(DropDownList1); //报销金额 Label
Label1 = new Label();
Label1.Text = " 报销金额 ";
td2.Controls.Add(Label1); //结束< <= =
DropDownList1 = new DropDownList();
DropDownList1.ID = "ddlEnd" + i.ToString();
item = new ListItem();
item.Text = "<";
item.Value = "<";
DropDownList1.Items.Add(item);
item = new ListItem();
item.Text = "<=";
item.Value = "<=";
DropDownList1.Items.Add(item);
item = new ListItem();
item.Text = "=";
item.Value = "=";
DropDownList1.Items.Add(item);
td2.Controls.Add(DropDownList1); //结束数
TextBox1 = new TextBox();
TextBox1.ID = "txtEndNum" + i.ToString();
TextBox1.Width = 80;
if (i == (duanshu - 1))
{
TextBox1.Text = "-1";
}
td2.Controls.Add(TextBox1); //报销比例 Label
Label1 = new Label();
Label1.Text = " 报销比例:";
td2.Controls.Add(Label1); //报销比例 TextBox
TextBox1 = new TextBox();
TextBox1.ID = "txtBXBiLi" + i.ToString();
TextBox1.Width = 80;
TextBox1.Text = "0";
td2.Controls.Add(TextBox1); //% Label
Label1 = new Label();
Label1.Text = " %";
td2.Controls.Add(Label1);
tr.Cells.Add(td1);
tr.Cells.Add(td2);
TableFD.Rows.Add(tr);
}
}
#endregion
解决方案 »
- 高手进 不是高手也进来 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 前台页面代码和后台代码是怎样联系的啊?
- 我更新ntext字段为什么数据超过4K就无法更新,没有使用存储过程
- .net中Access的查询问题
- 求助:VS帮助系统失效
- 图片存入数据库而不使用存储过程,请高手帮忙看看
- 为什么我用Javascript修改datagrid控件后,提交到服务器datagrid还是没有改变?
- 关于checkboxlist的动态绑定及取值??
- pop3收下邮件后内容编码的转换问题
- 大家好,求ASP.NET高级编程电子书?
- form表单验证用户生成的票证cookie保存在哪儿的哦?
- 不同服务器的sql数据库之间,大量数据传输的问题
先把你放控件的容器Clear()一下
td2.Controls.Clear();
Page_Load中根据ViewState的duanshu 来AddRow
clear(),那输入的值不也就没了吗
生成的控件是放在Panel1里面的试试
Panel1.Controls.Add(l);