从列表框中选择一个项目会触发一个prerender事件,该事件会从中删除焦点

时间:2013-12-14 09:41:46

标签: asp.net vb.net listbox autopostback

我正在创建一个ASP.net应用程序。我使用项填充ListBox控件,并使用Listbox的PreRender事件根据控件中的最大项设置其宽度。

但是在渲染ListBox之后,第一次单击ListBox中的一个项时,PreRender事件将触发并从​​ListBox中移除焦点(此事件不必要地触发,因为已经渲染了ListBox)。第二次单击ListBox中的项目时,PreRender事件不会触发并保持焦点。

这种行为是正常的吗?什么可能导致这种行为?

如果不是回发,则ListBox会填充在PageLoad上,并带有默认值。 列表框填充在TextBox的TextChanged事件上(TextBox用于在DB中搜索)

修改

我注释掉了PreRender事件并且行为没有消失。现在我想这可能是由TextBox中的PostBack引起的,当我从中移除焦点并从ListBox中选择一个项目时。

这方面的证据:我在TextBox(加载指示符)的请求的开头和结尾之间显示了一个gif,当我第一次从ListBox中选择一个项目时,gif是可见的。渲染。第二次没有问题。

使用AutoPostBack属性指定当TextBox控件失去焦点时是否会自动回发到服务器。在TextBox控件中按ENTER或TAB键是更改焦点的最常用方法。

我发现了为什么我报告的行为发生了。我可以以某种方式使TextBox不会在失去焦点时回发吗?它已经回归TextChanged了,这已经足够了。

1 个答案:

答案 0 :(得分:0)

使用AutoPostBack属性指定当TextBox控件失去焦点时是否会自动回发到服务器。在TextBox控件中按ENTER或TAB键是更改焦点的最常用方法。

我发现了为什么我报告的行为发生了。我现在将搜索如何在失去焦点时停止autopostoback。