我有一個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;
如果我沒有關閉頁面並上傳另一個文件,它會在下拉列表中顯示所選項目的值。如果我然後從下拉菜單中選擇另一個項目並上傳另一個文件,則它具有上一個選擇,然後在下一個文件上傳下一個選擇。所以它是第一次是空字符串,然後是我上傳的每個文件的後面一個選擇。
我不確定爲什麼價值不會持續存在,並且正在尋求如何解決問題的建議。
IIRC它依賴於何時在頁面生命週期中調用'hdnDocumentType.Value'。 Request.Form [hdnDocumentType.UniqueID]給你正確的價值嗎? –
其他我剛剛注意到:如果我不關閉頁面並上傳另一個文件,它將在下拉菜單中顯示所選項目的值。如果我然後從下拉菜單中選擇另一個項目並上傳另一個文件,則它具有上一個選擇,然後在下一個文件上傳下一個選擇。所以它是第一次是空字符串,然後是我上傳的每個文件的後面一個選擇。 – JDM