我在gridview控件中有两个文本框和一个标签,我在第二个文本框onblur事件属性中添加了一个javascript函数并在标签中显示结果,该函数工作正常并且结果显示在标签中,但是当我将网格数据保存到数据库中,标签返回 0 或空,但我能够看到值,如何克服这个问题。
谢谢并恭祝安康
我在gridview控件中有两个文本框和一个标签,我在第二个文本框onblur事件属性中添加了一个javascript函数并在标签中显示结果,该函数工作正常并且结果显示在标签中,但是当我将网格数据保存到数据库中,标签返回 0 或空,但我能够看到值,如何克服这个问题。
谢谢并恭祝安康
您的标签不会保留在 ViewState 中,因为它不包含作为“表单”控件。您可以使用隐藏的文本框来完成此操作,可能有更好的方法。
这是一个回答您的问题的链接。
http://www.mikesdotnetting.com/Article/65/ViewState-form-fields-labels-and-Javascript
如果我理解正确,(如果我错了,请纠正我)它是IPostBackDataHandler(更多信息)在客户端更改时处理服务器输入字段控件中的数据(Javascript)。标签控件不是输入字段,因此不会保存在客户端中所做的更改。
这是上面链接的引用:
ViewState 的工作是管理对服务器控件初始状态的任何更改,如果这些更改是在服务器上以编程方式进行的,或者是否将用户交互所做的更改传递给服务器。这不包括恢复表单输入的值,例如文本框或复选框中的选定项目。有一个常见的误解,即表单值由 ViewState 管理。他们不是。从没有过。这些值完全由 IPostBackDataHandler 管理和恢复。
IPostBackDataHandler 对于在其他服务器端技术(例如经典 ASP、PHP 等)上长大的 Web 开发人员来说是一个巨大的福音。在“过去”的日子里,我们曾经不得不手动连接每个表单字段以显示最初发布的内容值,因此如果服务器端验证失败,则不会向用户显示一个空表单来重新填写。IPostBackDataHandler 意味着我们再也不必这样做了。
正如另一个答案中提到的,使用隐藏值来保存 Javascript 所做的更改应该可以工作。