簡體   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