2012-11-23 76 views
2

我有一個UserControl,帶有一個在SharePoint解決方案中的ASPX頁面上引用的HiddenField,UpLoad控件和DropDownList。爲對照的標記是:從JavaScript中設置的HiddenField不持續

<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; 

如果我沒有關閉頁面並上傳另一個文件,它會在下拉列表中顯示所選項目的值。如果我然後從下拉菜單中選擇另一個項目並上傳另一個文件,則它具有上一個選擇,然後在下一個文件上傳下一個選擇。所以它是第一次是空字符串,然後是我上傳的每個文件的後面一個選擇。

我不確定爲什麼價值不會持續存在,並且正在尋求如何解決問題的建議。

+0

IIRC它依賴於何時在頁面生命週期中調用'hdnDocumentType.Value'。 Request.Form [hdnDocumentType.UniqueID]給你正確的價值嗎? –

+0

其他我剛剛注意到:如果我不關閉頁面並上傳另一個文件,它將在下拉菜單中顯示所選項目的值。如果我然後從下拉菜單中選擇另一個項目並上傳另一個文件,則它具有上一個選擇,然後在下一個文件上傳下一個選擇。所以它是第一次是空字符串,然後是我上傳的每個文件的後面一個選擇。 – JDM

回答

1

問題的原因可以是上傳組件。它可以使用iframe將文件上傳到服務器(例如,這是從Ajax Control Toolkit和其他一些上傳組件工作的異步文件上傳)。這可能是隱藏字段爲空的原因(因爲請求是通過iframe完成的)。如果這是您的情況,那麼您需要處理客戶端事件,該事件將在上傳完成時通知您(當然,如果此組件支持它們)並手動執行回發(或ajax請求)以執行所需的操作。

相關問題