2014-12-02 29 views
-1

我有一個複雜的頁面,但是我創建了一個簡單的ASP.NET頁面。我已經Telerik的RadAsyncUpload控制和UpdatePanel內的按鈕,如圖所示:

<asp:UpdatePanel ID="_updatePanel" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
    ... 
    <telerik:RadAsyncUpload ID="fileUpload" runat="server" MaxFileInputsCount="1" OnClientFilesSelected="fileUpload_ClientFilesSelected" /><br />   

    <asp:Button ID="_saveNewFileButton" runat="server" OnClick="_saveNewFileButton_Click" 
    Text="Save"/> 

    </ContentTemplate> 
</asp:UpdatePanel> 

當一個文件被選擇我要禁用_saveNewFileButton和更改文本「請等待附件上傳......」但我可以似乎沒有得到JavaScript中的按鈕引用:

var FilesUpdateInterval = null; 

//Handles client side FilesSelected event for _newFileUploadButton. 
function fileUpload_ClientFilesSelected(sender, args) { 
    //disable the click event for submit button during upload 
    var submitButton = $find('<%= _saveNewFileButton.ClientID %>'); 
    submitButton.set_text('Please Wait for Attachment Upload...') 
    submitButton.set_readOnly(true); 
    if (FilesUpdateInterval == null) { 
     FilesUpdateInterval = setInterval(function() { FileCheckForUploadCompletion(); }, 500); 
    } 
} 

我收到submitButton爲null錯誤。我試着把這個javascript代碼放在updatepanel和ContentTemplate裏面,得到了相同的結果。很明顯,無論我做什麼都是錯誤的。如何獲取JavaScript中的updatepanel中的控件?

編輯:我發現$找到工程只有telerik控件。所以,我不得不使用document.getElementById函數或者像Steve指定的那樣使用JQuery。另外,我必須使用RegisterClientScriptBlock。我會用史蒂夫的建議進行測試,然後接受答案。

回答

1

短版 - )使用$得到(或的document.getElementById(),定期HTML元素不是IScriptControls,所以$ find()不會給你任何東西,而且他們沒有你嘗試使用的富客戶端API。

例如

  var submitButton = $get('<%= _saveNewFileButton.ClientID %>'); 
      submitButton.setAttribute("value", "Please Wait for Attachment Upload..."); 

選項2 - 使用RadButton。

+0

感謝您的詳細解釋。我的不好,我複製從RadButton的不同位置粘貼,並預計它的工作,沒有思考。 – 2014-12-04 14:53:23

1

在ASP.Net中使用jQuery和vb,我做了類似這樣的工作,即使它不那麼漂亮,它也運行良好。 [無論]我有一個FormView,並不總是有控制。另外,我沒有使用按鈕,但我認爲這是更改按鈕文本的語法。無論哪種方式,它可能給你一些想法:

$('#<%=GetButtonClientID("_saveNewFileButton")%>').attr('value', 'Please Wait for Attachment Upload...'); 

然後,我有這樣的功能:

Public Function GetButtonClientID(ByVal argFieldName As String) As String 

    Dim tmpID As String = "0" 

    Dim tmpButton As Button = [Whatever].FindControl(argFieldName) 
    If Not tmpButton Is Nothing Then Return tmpButton.ClientID.ToString Else Return "0" 


End Function 
相關問題