在PostBack期间,JavaScript失去了它的功能

本文关键字:功能 失去 JavaScript PostBack 期间 | 更新日期: 2023-09-27 18:02:48

我有一个GridView,其中有一个CheckBox和三个textbox在其模板列。逻辑是,当我选中CheckBox时,相应的textbox应该被启用。如果我取消复选框,那么相应的文本框应该被禁用。我为这个功能编写了JavaScript。

一切都很好,但在那个页面我有一个下拉列表太。当我改变DropDownList的值,页面得到PostBack,在那个时候,我失去了JavaScript功能,即在GridView中启用的文本框被禁用。如何解决这个问题?

在PostBack期间,JavaScript失去了它的功能

在更新面板的每个帖子后,你需要重新初始化你的javascript,因为正如你所理解的html的结构已经改变,javascript在更新面板更新后不存在的前一个上运行。微软提供了如下功能:

这是javascript的行。

<script type="text/javascript"> 
    var prm = Sys.WebForms.PageRequestManager.getInstance();    
    prm.add_initializeRequest(InitializeRequest);
    prm.add_endRequest(EndRequest);
    function InitializeRequest(sender, args) {      
    }
    function EndRequest(sender, args) {
      // here initialize again your javascript
    }
</script>

使用ASP Grid的RowCreated事件在复选框上添加客户端函数,这样客户端函数将保留在每次回发

您必须在每次回发时使用ScriptManager.RegisterStartupScript方法注册javascript以使其运行:这里有一个示例(对不起,为英文文章编辑:p)

使用自动发送回与复选框启用禁用文本框从服务器端代码。这将更新视图状态,因此它将在选择更改时维护。在ajax的UpdatePanel中使用这些。或者,您也可以在updatepanel中添加下拉菜单,这样选择的更改就不会影响到其他页面元素。

JavaScript正在开发DOM。当页面得到PostBack值从ViewState被写入DOM和覆盖您的JavaScript更改。你应该以持久的方式存储复选框的状态。jQuery data()或hiddenfield并在PostBack后将更改写回DOM