问题描述
做了一个聊天室的作业,想再提交后经输入框清空,但是直接赋值好像吧不行,网上搜的js方法也不管用,断点调试发现TextBox1的Text属性没有变,不知道什么情况,难道和ajax有关,新手求指教protectedvoidButton1_Click(objectsender,EventArgse){Application["chat"]=Application["chat"]+"【"+name+"】:"+TextBox1.Text+"n";TextBox1.Text=string.Empty;//想用这句来清空,但是赋什么值都没用TextBox2.Text=Application["chat"].ToString();}
页面结构<%@PageTitle=""Language="C#"MasterPageFile="~/MasterPage.master"AutoEventWireup="true"CodeFile="ChatRoom.aspx.cs"Inherits="ChatRoom"%><asp:ContentID="Content1"ContentPlaceHolderID="head"Runat="Server"><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title></title><styletype="text/css">#form1{text-align:center;}</style></asp:Content><asp:ContentID="Content2"ContentPlaceHolderID="ContentPlaceHolder1"Runat="Server"><!DOCTYPEhtml><htmlxmlns="http://www.w3.org/1999/xhtml"><bodystyle="height:126px;width:540px"><divstyle="text-align:center"><asp:ScriptManagerID="ScriptManager1"runat="server"></asp:ScriptManager><asp:LabelID="Label1"runat="server"Font-Names="幼圆"style="font-size:xx-large"></asp:Label><br/><asp:LabelID="Label3"runat="server"></asp:Label><br/><asp:UpdatePanelID="UpdatePanel1"runat="server"><ContentTemplate><asp:PanelID="Panel1"runat="server"style="word-break:break-all"><asp:TextBoxID="TextBox2"runat="server"Height="512px"Width="442px"Font-Names="微软雅黑"BorderColor="#FF9933"BorderStyle="Solid"Text=""style="text-align:left"Enable="False"Multiline="True"Scrollbars="2-Vertical"Enabled="False"ReadOnly="True"TextMode="MultiLine"></asp:TextBox></asp:Panel><asp:TimerID="Timer1"runat="server"Interval="1000"OnTick="Timer1_Tick"></asp:Timer></ContentTemplate><Triggers><asp:AsyncPostBackTriggerControlID="Button1"/></Triggers></asp:UpdatePanel><asp:TextBoxID="TextBox1"runat="server"Height="20px"Width="317px"></asp:TextBox><asp:ButtonID="Button1"runat="server"Text="发送"Height="28px"Width="119px"OnClick="Button1_Click"/></div></body></html></asp:Content>
解决方案
解决方案二:
TextBox1中原来有值没?有没有禁用viewstate
解决方案三:
ReadOnly="True"这个属性吧
解决方案四:
用js应该可以的,你查看下网页,因为使用了模版页,生成出来的textbox名称跟ID已经变化了
解决方案五:
该回复于2014-12-06 19:46:04被版主删除
解决方案六:
TextBox1.Text="";这样呢?
解决方案七:
你的TextBox1不在UpdatePanel1里边,怎么更新前端界面?
解决方案八:
我以前写过一个demo,参考:注意设置属性UpdateMode="Conditional"
解决方案九:
UpdatePanel局部刷新
解决方案十:
引用6楼sp1234的回复:
你的TextBox1不在UpdatePanel1里边,怎么更新前端界面?
确实放到Updatepanel里可以清除,但是这个时候有个问题是因为timer的导致UpdatePanel定时刷新,每次刷新textbox里的光标就会消失,timer的值设成1000ms的话,那几乎连字都打不了了
解决方案十一:
引用3楼gongjie416的回复:
用js应该可以的,你查看下网页,因为使用了模版页,生成出来的textbox名称跟ID已经变化了
id没问题,js试过不管用,现在看来因为ajax控件阻止了整个页面刷新,但是textbox放到ajax控件里就没法打字了,不知道有什么解决办法没有?可以一个页面使用两套ajax控件吗?
解决方案十二:
引用10楼vvcgp的回复:
Quote: 引用3楼gongjie416的回复:
用js应该可以的,你查看下网页,因为使用了模版页,生成出来的textbox名称跟ID已经变化了id没问题,js试过不管用,现在看来因为ajax控件阻止了整个页面刷新,但是textbox放到ajax控件里就没法打字了,不知道有什么解决办法没有?可以一个页面使用两套ajax控件吗?
实测不行Orz,放了两个UpdatePanel但是前一个的timer执行刷新时两个一起刷新。。。怎么办啊[
解决方案十三:
微软一个伪造的“服务端事件”,坑杀不少程序员
解决方案十四:
在aspx.cs中调用数据库数据为textbox文本框赋值示例//文本框设置<asp:TextBoxID="txtEmail"runat="server"Width="130px"></asp:TextBox><asp:TextBoxID="txtHphone"runat="server"Width="130px"></asp:TextBox><asp:TextBoxID="txtMphone"runat="server"Width="130px"></asp:TextBox><asp:TextBoxID="TextBox1"runat="server"BackColor="#E0E0E0"ReadOnly="True"Width="117px"></asp:TextBox><asp:TextBoxID="txtIP"runat="server"BackColor="#E0E0E0"ReadOnly="True"Width="117px"></asp:TextBox>//调用数据库数据为文本框赋值protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){SqlConnectionmycon=newSqlConnection(ConfigurationManager.AppSettings["conStr"]);SqlDataAdaptermydataadapter=newSqlDataAdapter("select*fromtb_BlogwhereBlogID="+Request["id"],mycon);DataSetds=newDataSet();mydataadapter.Fill(ds,"tb_Blog");DataRowViewrowview=ds.Tables["tb_Blog"].DefaultView[0];this.txtEmail.Text=Convert.ToString(rowview["Email"]);this.txtHphone.Text=Convert.ToString(rowview["HomePhone"]);this.txtMphone.Text=Convert.ToString(rowview["MobilePhone"]);this.TextBox1.Text=Convert.ToString(rowview["RegTime"]);this.txtIP.Text=Convert.ToString(rowview["IP"]);mycon.Close();}}
解决方案十五:
解决方案:
解决方案:
引用11楼vvcgp的回复:
Quote: 引用10楼vvcgp的回复:
Quote: 引用3楼gongjie416的回复:
用js应该可以的,你查看下网页,因为使用了模版页,生成出来的textbox名称跟ID已经变化了id没问题,js试过不管用,现在看来因为ajax控件阻止了整个页面刷新,但是textbox放到ajax控件里就没法打字了,不知道有什么解决办法没有?可以一个页面使用两套ajax控件吗?
实测不行Orz,放了两个UpdatePanel但是前一个的timer执行刷新时两个一起刷新。。。怎么办啊[
用两个updatepanel,把TextBox1放到第二个updatepanel中,把第二个UpdatePanel的UpdateMode属性设置为Conditional,参照这篇文章