如何在asp.net中回发后保留控件 [英] How to retain control after post back in asp.net

查看:58
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆