2014-12-02 9 views
-1

복잡한 페이지가 있지만 문제가있는 간단한 ASP.NET 페이지를 만들었습니다.

파일이 나는 _saveNewFileButton를 비활성화 할 텍스트 변경하려면 선택
<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> 

"첨부 파일 업로드 기다립니다주세요 ..."하지만 난 할 수 있습니다 같이 나는 RadAsyncUpload 컨트롤과 UpdatePanel 내부의 버튼을 telerik 한 '자바 스크립트에서 버튼 참조를 잡아 먹는 것 같습니다.

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에있는 컨트롤을 어떻게 잡을 수 있습니까?

편집 : $ find는 telerik 컨트롤에서만 작동한다는 것을 알았습니다. 그래서 document.getElementById 함수 나 JQuery를 Steve와 같이 사용해야합니다. 또한 RegisterClientScriptBlock을 사용해야합니다. 나는 스티브의 제안으로 시험하고 대답을 받아 들일 것이다.

답변

1

짧은 버전 :

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

그리고 나는이 같은 기능을 가지고 : 어느 쪽이 든, 그것은 몇 가지 아이디어 당신에게 줄 수도 HTML 요소는 IScriptControls가 아니므로 $ find()는 사용자에게 아무 것도주지 않고 사용하려고하는 리치 클라이언트 API를 가지고 있지 않습니다. 예를

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

옵션이 들어

- RadButton를 사용합니다.

+0

자세히 설명해 주셔서 감사합니다. 나쁜 점은 RadButton을 사용하여 다른 위치에서 붙여 넣은 것입니다. –

1

jQuery와 vb를 ASP.Net과 함께 사용하면이 방법과 비슷하게 잘 수행 할 수 있습니다. [뭐든간에] 나는 항상 컨트롤을 가지고 있지 않은 FormView를 가지고있었습니다. 또한 버튼과 함께 사용하지는 않았지만 버튼 텍스트를 변경하는 구문이라고 생각합니다. 정기적으로, (얻을 $ 사용) 또는 document.getElementById를() -

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