如何在asp.net中回发后保留控件 [英] How to retain control after post back in asp.net
本文介绍了如何在asp.net中回发后保留控件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在每个按钮上有2个按钮和2个文本框,当我点击按钮1它在panel2,panel3中添加2个文本框时,当我点击按钮2它添加2个文本框但是在panel3,面板...但问题是当我按下按钮2,按钮1文本框消失
使用系统;
使用 System.Collections.Generic;
使用 System.Linq;
使用 System.Web;
使用 System.Web.UI;
使用 System.Web.UI.WebControls;
使用 System.Data.SqlClient;
使用 System.Web.UI.HtmlControls;
命名空间 FinAppCs
{
public partial class EmiCalculater:System.Web.UI.Page
{
int occor;
int occor2;
int Id = 0 ;
HtmlTable htbl;
HtmlTableCell Hdcl;
HtmlTableRow Hdr;
HtmlTableRow Hdr2;
受保护 void Page_Load( object sender,EventArgs e)
{
// recreate();
}
受保护 void btnAdd_Click(对象发件人,EventArgs e)
{
dateamount();
// recreate2();
}
protected void btnReche_Click( object sender,EventArgs e)
{
// recreate1();
ratecheng();
}
void dateamount()
{
{
int id;
HtmlTable htbl = new HtmlTable();
HtmlTable htbl2 = new HtmlTable();
if (ViewState [ ID] == null )
{
id = 1 ;
}
else
{
id = Convert.ToInt32(ViewState [ ID]);
}
for ( int i = 0 ; i < id; i ++)
{
Hdr = 新 HtmlTableRow();
TextBox txtIntdate = new TextBox();
txtIntdate.ID = txtIntdate + i;
txtIntdate.Text = Request.Form [txtIntdate.ClientID];
Hdcl = new HtmlTableCell();
Hdcl.Controls.Add(txtIntdate);
Hdr.Controls.Add(Hdcl);
htbl2.Controls.Add(Hdr);
Panel2.Controls.Add(htbl2);
// 第二个文本框
Hdr = new HtmlTableRow();
TextBox txtAmnt = new TextBox();
txtAmnt.ID = txtAmnt + i;
txtAmnt.Text = Request.Form [txtAmnt.ClientID];
Hdcl = new HtmlTableCell();
Hdcl.Controls.Add(txtAmnt);
Hdr.Controls.Add(Hdcl);
htbl.Controls.Add(Hdr);
Panel3.Controls.Add(htbl);
}
id ++;
ViewState [ ID] = id;
// htbl.Controls.Add(Hdr);
// htbl2.Controls.Add(Hdr);
// Panel2.Controls.Add(htbl);
}
}
void ratecheng()
{
// recreate();
int id1;
HtmlTable htbld = new HtmlTable();
HtmlTable htbl21 = new HtmlTable();
if (ViewState [ ID1] == null )
{
id1 = 1 ;
}
else
{
id1 = Convert.ToInt32(ViewState [ ID1]);
}
for ( int j = 0 ; j < id1; j ++)
{
Hdr2 = 新 HtmlTableRow();
TextBox txtInreche = new TextBox();
txtInreche.ID = txtInreche + j;
txtInreche.Text = Request.Form [txtInreche.ClientID];
Hdcl = new HtmlTableCell();
Hdcl.Controls.Add(txtInreche);
Hdr2.Controls.Add(Hdcl);
htbl21.Controls.Add(Hdr2);
Panel4.Controls.Add(htbl21);
// 第二个文本框
Hdr2 = new HtmlTableRow();
TextBox txtrate = new TextBox();
txtrate.ID = txtrate + j;
txtrate.Text = Request.Form [txtrate.ClientID];
Hdcl = new HtmlTableCell();
Hdcl.Controls.Add(txtrate);
Hdr2.Controls.Add(Hdcl);
htbld.Controls.Add(Hdr2);
Panel5.Controls.Add(htbld);
}
id1 ++;
ViewState [ ID1] = id1;
// htbl.Controls.Add(Hdr);
// htbl2.Controls.Add(Hdr);
// Panel2.Controls.Add(htbl);
}
// void recreate1()
// {
// {
// int id;
// HtmlTable htbl = new HtmlTable();
// HtmlTable htbl2 = new HtmlTable();
// if(ViewState [ID] == null)
// {
// id = 1;
// }
// < span class =code-comment> else
// {
// id = Convert.ToInt32(ViewState [ID]);
// }
// for(int i = 0;我< ID; i ++)
// {
// Hdr = new HtmlTableRow();
// TextBox txtIntdate = new TextBox();
// txtIntdate.ID =txtIntdate+ i;
// txtIntdate。 Text = Request.Form [txtIntdate.ClientID];
// Hdcl = new HtmlTableCell( );
// Hdcl.Controls.Add(txtIntdate);
// Hdr.Controls.Add(Hdcl);
// htbl2.Controls.Add(Hdr);
// Panel2.Controls.Add(htbl2);
// //第二个文本框
// Hdr = new HtmlTableRow();
// TextBox txtAmnt = new TextBox();
// txtAmnt.ID =txtAmnt+ i;
// txtAmnt.Text = Request.Form [txtAmnt.ClientID];
// Hdcl = new HtmlTableCell();
// Hdcl.Controls.Add(txtAmnt);
// Hdr.Controls.Add(Hdcl);
// htbl.Controls.Add(Hdr);
// Panel3.Controls.Add(htbl);
// }
// // id ++;
< span class =code-comment> // // ViewState [ID] = id;
// //htbl.Controls.Add(Hdr);
/ / //htbl2.C ontrols.Add(Hdr);
// //Panel2.Controls.Add(htbl );
// }
// }
// void recreate2()
// {
// {
// int id;
// HtmlTable htbl = new HtmlTable();
// HtmlTable htbl2 = new HtmlTable();
// if(ViewState [ID] == null)
// {
// id = 1;
// }
// else
// {
// id = Convert.ToInt32(ViewState [ID]);
// }
// for(int i = 0;我< ID; i ++)
// {
// Hdr = new HtmlTableRow();
// TextBox txtIntdate = new TextBox();
// txtIntdate.ID =txtIntdate+ i;
// txtIntdate。 Text = Request.Form [txtIntdate.ClientID];
// Hdcl = new HtmlTableCell( );
// Hdcl.Controls.Add(txtIntdate);
// Hdr.Controls.Add(Hdcl);
// htbl2.Controls.Add(Hdr);
// Panel2.Controls.Add(htbl2);
// //第二个文本框
// Hdr = new HtmlTableRow();
// TextBox txtAmnt = new TextBox();
// txtAmnt.ID =txtAmnt+ i;
// txtAmnt.Text = Request.Form [txtAmnt.ClientID];
// Hdcl = new HtmlTableCell();
// Hdcl.Controls.Add(txtAmnt);
// Hdr.Controls.Add(Hdcl);
// htbl.Controls.Add(Hdr);
// Panel3.Controls.Add(htbl);
// }
// // id ++;
< span class =code-comment> // // ViewState [ID] = id;
// //htbl.Controls.Add(Hdr);
/ / //htbl2.C ontrols.Add(Hdr);
// //Panel2.Controls.Add(htbl );
// }
// }
}
}
解决方案
在asp.net中,当回发发生时,所有动态控件都会消失。要保留动态控制,你必须处理javascript / jquery。
例如。
<脚本>
(' #button2')。点击( function (){
var txt = document .createElement(' input');
txt.setAttribute(' type',' txt');
txt.setAttribute(' id',' txt1');
// 最后在目标区域添加此txt。假设div
(' #div')。appendChild(txt);
});
< / script>
i have 2 button and creting 2 textbox on each button when i click button 1 it add 2 textbox in panel2,panel3 and when i click button 2 it add 2 textbox but in panel3 ,panel ...but problem is that when i clinck button 2 ,button 1 textbox desappear
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Web.UI.HtmlControls;
namespace FinAppCs
{
public partial class EmiCalculater : System.Web.UI.Page
{
int occor;
int occor2;
int Id = 0;
HtmlTable htbl;
HtmlTableCell Hdcl;
HtmlTableRow Hdr;
HtmlTableRow Hdr2;
protected void Page_Load(object sender, EventArgs e)
{
//recreate();
}
protected void btnAdd_Click(object sender, EventArgs e)
{
dateamount();
//recreate2();
}
protected void btnReche_Click(object sender, EventArgs e)
{
// recreate1();
ratecheng();
}
void dateamount()
{
{
int id;
HtmlTable htbl = new HtmlTable();
HtmlTable htbl2 = new HtmlTable();
if (ViewState["ID"] == null)
{
id = 1;
}
else
{
id = Convert.ToInt32(ViewState["ID"]);
}
for (int i = 0; i < id; i++)
{
Hdr = new HtmlTableRow();
TextBox txtIntdate = new TextBox();
txtIntdate.ID = "txtIntdate" + i;
txtIntdate.Text = Request.Form[txtIntdate.ClientID];
Hdcl = new HtmlTableCell();
Hdcl.Controls.Add(txtIntdate);
Hdr.Controls.Add(Hdcl);
htbl2.Controls.Add(Hdr);
Panel2.Controls.Add(htbl2);
//second textbox
Hdr = new HtmlTableRow();
TextBox txtAmnt = new TextBox();
txtAmnt.ID = "txtAmnt" + i;
txtAmnt.Text = Request.Form[txtAmnt.ClientID];
Hdcl = new HtmlTableCell();
Hdcl.Controls.Add(txtAmnt);
Hdr.Controls.Add(Hdcl);
htbl.Controls.Add(Hdr);
Panel3.Controls.Add(htbl);
}
id++;
ViewState["ID"] = id;
//htbl.Controls.Add(Hdr);
//htbl2.Controls.Add(Hdr);
//Panel2.Controls.Add(htbl);
}
}
void ratecheng()
{
// recreate();
int id1;
HtmlTable htbld = new HtmlTable();
HtmlTable htbl21 = new HtmlTable();
if (ViewState["ID1"] == null)
{
id1 = 1;
}
else
{
id1 = Convert.ToInt32(ViewState["ID1"]);
}
for (int j = 0; j < id1; j++)
{
Hdr2 = new HtmlTableRow();
TextBox txtInreche = new TextBox();
txtInreche.ID = "txtInreche" + j;
txtInreche.Text = Request.Form[txtInreche.ClientID];
Hdcl = new HtmlTableCell();
Hdcl.Controls.Add(txtInreche);
Hdr2.Controls.Add(Hdcl);
htbl21.Controls.Add(Hdr2);
Panel4.Controls.Add(htbl21);
//second textbox
Hdr2 = new HtmlTableRow();
TextBox txtrate = new TextBox();
txtrate.ID = "txtrate" + j;
txtrate.Text = Request.Form[txtrate.ClientID];
Hdcl = new HtmlTableCell();
Hdcl.Controls.Add(txtrate);
Hdr2.Controls.Add(Hdcl);
htbld.Controls.Add(Hdr2);
Panel5.Controls.Add(htbld);
}
id1++;
ViewState["ID1"] = id1;
//htbl.Controls.Add(Hdr);
//htbl2.Controls.Add(Hdr);
//Panel2.Controls.Add(htbl);
}
// void recreate1()
// {
// {
// int id;
// HtmlTable htbl = new HtmlTable();
// HtmlTable htbl2 = new HtmlTable();
// if (ViewState["ID"] == null)
// {
// id = 1;
// }
// else
// {
// id = Convert.ToInt32(ViewState["ID"]);
// }
// for (int i = 0; i < id; i++)
// {
// Hdr = new HtmlTableRow();
// TextBox txtIntdate = new TextBox();
// txtIntdate.ID = "txtIntdate" + i;
// txtIntdate.Text = Request.Form[txtIntdate.ClientID];
// Hdcl = new HtmlTableCell();
// Hdcl.Controls.Add(txtIntdate);
// Hdr.Controls.Add(Hdcl);
// htbl2.Controls.Add(Hdr);
// Panel2.Controls.Add(htbl2);
// //second textbox
// Hdr = new HtmlTableRow();
// TextBox txtAmnt = new TextBox();
// txtAmnt.ID = "txtAmnt" + i;
// txtAmnt.Text = Request.Form[txtAmnt.ClientID];
// Hdcl = new HtmlTableCell();
// Hdcl.Controls.Add(txtAmnt);
// Hdr.Controls.Add(Hdcl);
// htbl.Controls.Add(Hdr);
// Panel3.Controls.Add(htbl);
// }
// //id++;
// //ViewState["ID"] = id;
// //htbl.Controls.Add(Hdr);
// //htbl2.Controls.Add(Hdr);
// //Panel2.Controls.Add(htbl);
// }
// }
//void recreate2()
// {
// {
// int id;
// HtmlTable htbl = new HtmlTable();
// HtmlTable htbl2 = new HtmlTable();
// if (ViewState["ID"] == null)
// {
// id = 1;
// }
// else
// {
// id = Convert.ToInt32(ViewState["ID"]);
// }
// for (int i = 0; i < id; i++)
// {
// Hdr = new HtmlTableRow();
// TextBox txtIntdate = new TextBox();
// txtIntdate.ID = "txtIntdate" + i;
// txtIntdate.Text = Request.Form[txtIntdate.ClientID];
// Hdcl = new HtmlTableCell();
// Hdcl.Controls.Add(txtIntdate);
// Hdr.Controls.Add(Hdcl);
// htbl2.Controls.Add(Hdr);
// Panel2.Controls.Add(htbl2);
// //second textbox
// Hdr = new HtmlTableRow();
// TextBox txtAmnt = new TextBox();
// txtAmnt.ID = "txtAmnt" + i;
// txtAmnt.Text = Request.Form[txtAmnt.ClientID];
// Hdcl = new HtmlTableCell();
// Hdcl.Controls.Add(txtAmnt);
// Hdr.Controls.Add(Hdcl);
// htbl.Controls.Add(Hdr);
// Panel3.Controls.Add(htbl);
// }
// //id++;
// //ViewState["ID"] = id;
// //htbl.Controls.Add(Hdr);
// //htbl2.Controls.Add(Hdr);
// //Panel2.Controls.Add(htbl);
// }
// }
}
}
解决方案
Hi,
In asp.net when postback happen all dynamic controls disappears. To retain dynamic control you have to deal with javascript/jquery.
eg.,
<script>
('#button2').click(function(){ var txt = document.createElement('input'); txt.setAttribute('type', 'txt'); txt.setAttribute('id', 'txt1'); // finally add this txt in your target area. suppose div
('#div').appendChild(txt); }); </script>
这篇关于如何在asp.net中回发后保留控件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文