先贴代码。 <form id="form1" runat="server">
<%= strTestHtml%>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</form> public String strTestHtml; protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
strTestHtml = "<input type=\"text\" name=\"t1\">";
}
}
protected void Button1_Click(object sender, EventArgs e)
{
String strTest = ConvertUtility.ToNonNullString(Request.Form["t1"]);
MsgUtility.RegisterErrorScript(this, strTest);
return;
}
因为strTestHtml里面的input个数不确定,所以不能用textbox来做,我需要的是Button1_Click事件后页面还能显示strTestHtml并且用户输入的值还保留。我试过用ajax的方法来做,没搞通。试过UpdatePanel,但是对这个不熟,也不行。请大家出谋划策,谢谢!
<%= strTestHtml%>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</form> public String strTestHtml; protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
strTestHtml = "<input type=\"text\" name=\"t1\">";
}
}
protected void Button1_Click(object sender, EventArgs e)
{
String strTest = ConvertUtility.ToNonNullString(Request.Form["t1"]);
MsgUtility.RegisterErrorScript(this, strTest);
return;
}
因为strTestHtml里面的input个数不确定,所以不能用textbox来做,我需要的是Button1_Click事件后页面还能显示strTestHtml并且用户输入的值还保留。我试过用ajax的方法来做,没搞通。试过UpdatePanel,但是对这个不熟,也不行。请大家出谋划策,谢谢!
解决方案 »
- vs2008里面运行一个aspx页面,出现两个相同的运行页面
- datagridview 删除 编辑
- 为什么我的字都变得很大
- |zyciis| 水晶报表画表格非常之麻烦 大家都是怎么画的 谢谢
- gridview提示框的使用
- 问一个菜鸟级的问题,按纽事件没有响应,怎么?高分相送!!!
- 一个有意思的问题!希望大家来讨论!谢谢了!在线等
- 新手简单问题:datagrid中怎样实现根据用户的不同而是否显示删除按钮
- 为什么我的ASP.NET网站管理工具打不开?
- microsoft date and time picker control 6.0 对象如何取值
- 一个奇怪的winform问题(初始化窗体位置)
- 关于Repeater内的控件与脚本(AJAX)的问题
{
strTestHtml = "<input type=\"text\" name=\"t1\">";
}
画控件这种事情.. 不要放在里面..
protected void Page_Load(object sender, EventArgs e)
{
strTestHtml = "<input type=\"text\" name=\"t1\">"; if (!IsPostBack)
{
}
}
因为控件的个数和属性都是从数据库里面读出来的,所以这个完全放在客户端用ajax做是有问题的。
我现在提交以后,服务端也是先从数据库获得控件的个数和属性,然后Request.Form。
简单的就是把现有的值保存起来的,然后再show出来的
问题就在于这存值上,如果把所有的值都存放在Session里面,有点恐怖。
放在中,
<asp:literal id="xxx" runat="sever" />
如 xxx.Text=strTestHtml;
开启页面的viewstate,literal是web服务器控件,按道理应该可以保留.
if (!IsPostBack){}动态添加回传控件会丢失,还要通过viewstate保存相关值。保持其持久性
JS添加
theInput_TEXTAREA.ID = theRow["ID"].ToString();
theInput_TEXTAREA.Style.Add("position", "absolute");
theInput_TEXTAREA.Style.Add("left", theRow["INPUT_X"].ToString() + "px");
theInput_TEXTAREA.Style.Add("top", theRow["INPUT_Y"].ToString() + "px");
theInput_TEXTAREA.Rows = Convert.ToInt16(theRow["INPUT_H"].ToString());
theInput_TEXTAREA.Cols = Convert.ToInt16(theRow["INPUT_W"].ToString());
theInput_TEXTAREA.Style.Value = theInput_TEXTAREA.Style.Value + theRow["INPUT_CSS"];
if (theString == theRow["REDONLE"].ToString())
{
theInput_TEXTAREA.Attributes.Add("readonly", "readonly");
}
theInput_TEXTAREA.Value = the_value;(); theDrawDiv.Controls.Add(theInput_TEXTAREA);我是用这种方式来构造控件,先保存后重绘。保存时用 HtmlInputText theInput_TEXT = (HtmlInputText)theDrawDiv.FindControl(theRow["ID"].ToString());这样的方法得到构造的控件。
测试过,postback后空间还在,但是用户填写的值不在了。
请问如何对构造的空间启用viewstate?
貌似和构造控件的方式关系不大,我测试了你的方法,和我直接html构造空间问题一样。
你直接用html中间隔代码的方法生成的控件,并不是服务器端控件。
我的这种方法,如果你在Page_Load中每次都生成同样的控件时,上次生成的控件值是可以传递过来的。