我有一个连接到TextBox的DropDownList。触发事件SelectedIndexChanged时,文本框中的文本会更改。文本框的内容也可以通过用户输入进行更改。在页面的末尾,用户必须提交数据(按钮)。 启用javascript时一切正常,但我也有禁用javascript的用户。 如果没有javascript,DropDownList的SelectedIndexChanged事件将在Button-Click(处理按钮的Click-Event之前)之后被调用。用户输入文本框会被SelectedIndexChanged事件覆盖。
如果按钮点击触发了SelectedIndexChanged事件,如何在Code中检测?如何才能让用户更改文本框的文本?
编辑: 我可以使用属性IsPostBackEventControlRegistered吗?单击按钮时似乎总是如此,但在SelectedIndexChanged事件中为false。
答案 0 :(得分:0)
嗯,这是可能的,但并不容易。您基本上需要通过使用隐藏字段来跟踪是否启用了javascript,执行以下操作:
<asp:HiddenField ID="JSEnabled" runat="server" ClientIDMode="Status" Value="F" />
<script type="text/javascript">
function checkForJavaScript() {
$("#JSEnabled").val("T");
}
</script>
你可以从window.onload或jquery.ready事件调用这个脚本,无论你喜欢什么样的JS选项,这都可以告诉你是否启用了JS来执行selectedindexchanged事件,或者是否因为JS不是因为按钮触发了它启用。要判断按钮是否被单击并导致回发,您可以查看:
Request.Form.Get("__EVENTTARGET")
字段并查看ID是否与按钮的UniqueID匹配。 ASP.NET中的每个控件都设置了它的ID(通常,但并非总是,由于某些原因)。虽然,我不确定,您可能必须设置UseSubmitBehavior="False"
才能实现。隐藏的字段可以被操纵,因此它不是完全的。
你应该问的问题是,你真的需要这种复杂性吗?