如下代码所示,在Page_Load中给TextBox赋值后,无论后来输入什么值,点击Button1,Label1.Text都等于初始值“测试数据”,不能更新文本框的值!
private void Page_Load(object sender, System.EventArgs e)
{
TextBox1.Text = "测试数据";
}
private void Button1_
昨天做了一个信息
修改
页面,在运行时发现:
修改
Textbox
等控件的
值
提交后,数据并未发生变化。经反复检查"
修改
"按钮的事件处理代码并未发现错误,不知道如何是好。遂求助于互联网,发现网上有很多朋友也遇到过相似的问题,其
解决
方案是:在page_load事件中加入if(!ispostback){ }。尝试之后,果然问题
解决
。
顿觉ispostback的重要性。虽然经常在绑定gridvi...
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat
最近做项目遇到了这样一个问题:
TextBox
取不到
值
及其
TextBox
取不到js赋的
值
原因:使用了一个只读的
TextBox
控件
曾经遇到过这样的问题:使用了一个只读的
TextBox
控件,但是在后台代码中却怎么也得不到其 Text 属性
值
。
后来偶然发现了问题所在,请看下面摘自msdn的一段话:
重要事项:
发生回发时,
TextBox
控件(其 ReadOnly ...
当页面上的某个
TextBox
设置了属性ReadOnly = "True" 或 Enabled = "False" 时,在客户端为其赋
值
后,在后台代码中却
无法
获得
该
值
,可以通过如下的方式
解决
这个问题:
1、不设置ReadOnly,设置onfocus=this.blur()
文本框不变灰色,但也
无法
手动
修改
内容,可以在后台通过Text属性正常赋
值
取
值
2、设置了
1.通过getElementById() 方法
获得
,必须为文本框设定ID
值
,该方法
获得
的是一个对象的应用(返回
值
为:
Object
),要
获得
文本框的
值
需添加属性
值
--value,如:
获
值
代码:document.getElementById("port11").value;
另:要
获得
标签中间的
值
,方法如下:
12345
documen
TextBox
设置了ReadOnly="true" 后,要是在前台为控件添加了
值
,后台是取不到的,
值
为“空”
原理没想通,说不清楚微软是出于什么考虑的,不过有时是要我们能通过前台脚本来填充
值
,并不希望用户
修改
其控件内容,这时就比较尴尬了。
刚开始是换成Html 里的 ,不过后来发现这个工作量是很大的, 所以网上搜了下,没找出
TextBox
ReadOnly="true" 页面填充
值
取
如果您想获取 C# 中
TextBox
控件
修改
前的
值
,可以使用
TextBox
的 Leave 事件结合 Tag 属性来实现。具体做法如下:
1. 在
TextBox
的 Leave 事件中,将当前
TextBox
的 Text
值
存储到 Tag 属性中。
2. 在
TextBox
的 TextChanged 事件中,判断当前
TextBox
的 Text
值
是否与 Tag 属性中存储的
值
相同,如果不同则表示文本框的
值
已经被
修改
。
下面是一个示例代码:
private void
textBox
1_Leave(
object
sender, EventArgs e)
// 在 Leave 事件中将 Text
值
存储到 Tag 属性中
TextBox
textBox
= sender as
TextBox
;
textBox
.Tag =
textBox
.Text;
private void
textBox
1_TextChanged(
object
sender, EventArgs e)
// 在 TextChanged 事件中判断 Text
值
是否被
修改
TextBox
textBox
= sender as
TextBox
;
if (
textBox
.Text !=
textBox
.Tag.ToString())
// 如果 Text
值
被
修改
,则进行相应处理
// ...
以上代码可以在 Leave 事件中记录文本框
修改
前的
值
,在 TextChanged 事件中判断文本框是否被
修改
,并进行相应的处理。