繁体   English   中英

从JavaScript设置的HiddenField不持久

[英]HiddenField set from JavaScript not persisting

我有一个带有HiddenField,UpLoad控件和DropDownList的UserControl,这些控件在SharePoint解决方案的ASPX页上被引用。 控件的标记为:

<ig:WebDropDown ID="WebDropDownDocumentType" runat="server" Width="135px" DataSourceID="DataSourceDocumentType" DataKeyFields="Id" ValueField="Id" TextField="Name" AutoPostBack="False" ClientEvents-SelectionChanged="WebDropDownDocumentType_SelectionChanged">
<asp:HiddenField ID="hdnDocumentType" runat="server" />
<ig:WebUpload ID="WebUploadSupportingDocuments" runat="server" ProgressUrl="/WebUploadStatusHandler.ashx" Height="100px" MaxSimultaneousFilesUploads="1" Width="100px" OnUploadFinished="WebUploadSupportingDocuments_UploadFinished" AutoStartUpload="True" OnUploadStarting="WebUploadSupportingDocuments_UploadStarting" >

当为DropDownList更改所选索引时,将调用javascript函数来设置HiddenField值。 我还添加了一个警报,以验证HiddenField包含该值,并且确实显示了预期值。 这是功能:

function WebDropDownDocumentType_SelectionChanged(sender, e) {
        var wddObject = sender, 
        selectedIndex = wddObject.get_selectedItemIndex(), value;
        value = wddObject.get_items().getItem(selectedIndex).get_value();
        document.getElementById('<%=hdnDocumentType.ClientID %>').value = value;       
        alert(document.getElementById('<%=hdnDocumentType.ClientID %>').value);
    }

从DropDownList中选择一项之后,我会看到函数调用并验证警报中的值是否正确。 然后,我单击按钮以选择要上载的文件,并触发UploadFinished事件。 当我在UploadFinished事件中设置断点并检查HiddenField的值而不是期望值时,它是一个空字符串。

string sDocumentType = hdnDocumentType.Value;

如果我没有关闭页面并上传另一个文件,则它在下拉列表中具有所选项目的值。 如果然后从下拉列表中选择另一个项目并上传另一个文件,则该文件具有上一个选择,然后在下一个文件上载下一个选择。 因此,这是第一次为空字符串,然后是我上传的每个文件后面的一个选择。

我不确定为什么该价值不会持续存在,并且正在寻找有关解决问题的建议。

问题的原因可能是上载组件。 它可以使用iframe将文件上传到服务器(例如,这就是从Ajax Control Toolkit和其他一些上传组件进行异步文件上传的方式)。 这可能是导致隐藏字段为空的原因(因为请求是从iframe完成的)。 如果是这种情况,则需要处理客户端事件,该事件将在上载完成时通知您(当然,如果此组件支持它们),并手动执行回发(或ajax请求)以执行所需的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM