如何响应(实现)DataGird中ItemTemplate中的TextBox的TextChanged事件?

ue 2003-10-16 12:30:17
说明:
DataGrid某模板列中有TextBox,
我想某行的TextBox一但更改便处理此行的其他列。

我将处理过程放到了TextBox.TextChanged事件中

问题:

这个TextBox.TextChanged如何被激活?

如果不能激活,那么请问,我如何实现此功能?


拜托各位~~~在线等~~~

...全文
89 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
kwklover 2003-10-18
  • 打赏
  • 举报
回复
TextBox.TextChanged和DropDownList控件不一样,当DropDownList的AutoPostBack为true,选项的改变立刻响应相关事件,但TextBox.TextChanged的响应机制是不一样的,那怕AutoPostBack为true,也不会立即响应,它需要在页面提交到服务器的时候才会得到处理,页面提交需要其他的控件来触发,TextBox.TextChanged本身不会导致页面提交
ue 2003-10-18
  • 打赏
  • 举报
回复
首先感谢各位帮助和支持!!!

鞠躬!!!

到现在似乎已经发现了问题的原因。
(不敢肯定是因为我没有再作更彻底的测试,等有时间再作)

问题原因:
是因为此控件的上一级控件每次加载时,不论首次加载还是回调控件,
它都会从数据库读取初始化数据,
这导致了它的子控件内数据重新绑定,
这个DataGrid完全象新的一样,这可能是原因。

最终我选择了用DataGrid编辑按钮完成,数据更新。
这样的话,只有当用数据点击更新按钮后,数据才可以更新。

因为我考虑到,即便是我用的TextBoxChanged响应了,

那么我如何得到此行的控件实例呢?
参数中的e, 我想虽然它不是DataGrid事件参数,
但是应该可以通过它得到确切控件的实例。
但是我并不清楚这如何实现。所以我选择了其他方法解决。


目前敢肯定是这根注册事件没有关系。
我想主要原因还是在回送的DataGrid状态保存上。

出现这些问题,技术上的原因是:
我并不了解asp.net控件的事件模型。

我感觉这方面的资料真的很少!!!

如果可能我希望saucer(思归)能为我们提供这些资料。

我现在软件架构是经过过去和各位的讨论得到的,
有时真怕我用的架构跟控件事件模型冲突。





coolpine 2003-10-17
  • 打赏
  • 举报
回复
我试验了一下
在MyDataGrid_ItemCreated中
TextBox t1 = (TextBox) e.item.FindControl("Text1");
调试发现t1为空值,即没有找到这个Textbox控件,怎么回事?
coolpine 2003-10-17
  • 打赏
  • 举报
回复
关注
flyinglz 2003-10-17
  • 打赏
  • 举报
回复
注册事件可以这样:

<asp:TextBox ID="TextBox1" Runat=server OnTextChanged="TextBoxChanged"
Width="60" Height="20" AutoPostBack=True ></asp:TextBox>


然后,在.CS或.VB文件中定义TextBoxChanged 事件,事件的域必须是public or protected

coolpine 2003-10-17
  • 打赏
  • 举报
回复

问题是如何注册事件
首先,设计时是不行的,只有在运行的时候
由于TextBox是在datagrid的模板列中,所以应该不能在pageLoad的时候
楼主是在ItemCreated事件中,我觉得是对的
然后就是要找到这个TextBox控件,然后才能给它注册
我试验了一下
在MyDataGrid_ItemCreated中
TextBox t1 = (TextBox) e.item.FindControl("Text1");
调试发现t1为空值,即没有找到这个Textbox控件
然后就进行不下去了
guoyan19811021 2003-10-17
  • 打赏
  • 举报
回复
自己给这个TextBox注册事件
coolpine 2003-10-17
  • 打赏
  • 举报
回复
to ue(似敌是友)
可否看一下你的源程序?
wanghs@iicc.ac.cn
lufly2000 2003-10-16
  • 打赏
  • 举报
回复
gz
yylan 2003-10-16
  • 打赏
  • 举报
回复
我也碰到同样的问题,在模板列中的TextBox控件无法捕捉!痛苦!
coolpine 2003-10-16
  • 打赏
  • 举报
回复
我试过模板列中DownDrawList控件,其选定事件无法捕捉到
模板列中的TextBox控件应该也如此
看来.net还是很多缺陷啊
saucer 2003-10-16
  • 打赏
  • 举报
回复
remember, "AddHandler" hooks up event handlers dynamically. So upon postback, you have to re-hook up the event handler. But if you addeed the event handler declaratively, then the initialization code will do that for you


<asp:TextBox ID="TextBox1" Runat=server OnTextChanged="TextBoxChanged"
Width="60" Height="20" AutoPostBack=True ></asp:TextBox>
haoliqi 2003-10-16
  • 打赏
  • 举报
回复
用DataGrid.Items[index].FindControl();
ue 2003-10-16
  • 打赏
  • 举报
回复
奇怪!!!!!
我用
Dim _textbox As New System.Web.UI.WebControls.TextBox
_textbox = CType(e.Item.FindControl("TextBox1"), System.Web.UI.WebControls.TextBox)
AddHandler _textbox.TextChanged, AddressOf TextBoxChanged
事件就是无法激活,按理论上应该是当我更改了文本筐内值后,
随便点击网页的一处,事件就应该被激发。

Dim _SButton As New System.Web.UI.WebControls.Button
_SButton = CType(e.Item.FindControl("SButton"), System.Web.UI.WebControls.Button)
AddHandler _SButton.Click, AddressOf TextBoxChanged
点击按钮事件立即响应。
按钮和文本筐在通一列

以上代码位于DataGrid1_ItemCreated

事件过程定义如下
Protected Sub TextBoxChanged(ByVal sender As Object, ByVal e As System.EventArgs)




注页面代码:
<asp:TextBox ID="TextBox1" Runat=server
Width="60" Height="20" AutoPostBack=True ></asp:TextBox>



我不知道问题在何处~~~,我想是不是因为事件的响应前,文本筐内的值就已经被
填充了?

各位有何高见啊~~~

请不吝赐教,谢谢了!!!
ue 2003-10-16
  • 打赏
  • 举报
回复
acewang(**^o^**):如何给TextBox注册事件?

请把过程源码写出来(vb),我很着急啊~~~~谢谢!!!




zsww() :谢谢~~~
acewang 2003-10-16
  • 打赏
  • 举报
回复
自己给这个TextBox注册事件处理
zsww 2003-10-16
  • 打赏
  • 举报
回复
帮你顶!!!

-----------努力学习 不断实践 虚心讨教---------
ue 2003-10-16
  • 打赏
  • 举报
回复
AutoPostBack=true
的确,
但是如何捕捉这个TextChanged事件?

因为我知道模板列中的textbox控件需要你去find,

这时候,那么这个被找到的控件TextChanged事件该如何写呢?

该如何定义?



各位给个提示啊~~~



saucer 2003-10-16
  • 打赏
  • 举报
回复
set AutoPostBack=true on the textbox
kwklover 2003-10-16
  • 打赏
  • 举报
回复
TextBox.TextChanged事件不会立刻发生的,就算不是放在datagird里也是这样,
他仍然需要按submit等按钮提交到服务器端才会得到处理,我觉得你这个想法不太可能实现

你可以使用EditCommandColumn的更新来提交更新

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧