2011-06-30 42 views
0

我知道這聽起來很基本,但我真的很難過。我想要做的是在一個過程完成後顯示一個超鏈接。而這個過程就是AsyncFileUpload。在ASPX頁面中,我想創建一個隱藏在初始頁面加載中的頁面。如果我設置Style =「display:none;」似乎工作,但在文件上傳後,我沒有做任何事情,將使控制再次可見。當文件上傳時,它會調用一個名爲FileUploadComplete的函數。在這裏,無論我做什麼,超鏈接都不會顯示。如何使用AJAX(AjaxControlToolkit)和C#隱藏/顯示控件

任何幫助是極大的讚賞:)

謝謝 戴夫

這裏是ASPX代碼(與最近添加的JavaScript)

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="OptionsPlaceHolder" runat="server"> 
    <script language="javascript" type="text/javascript"> 
     function ShowLink() { 
      $("#openFile").show(); 
     } 
    </script> 
</asp:Content> 
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolderBody" runat="server"> 
    <asp:UpdatePanel ID="updImportFile" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <div class="pageHeader">   
       <asp:Literal runat="server" ID="pageTitle" Text="<%$ Resources:Resources, ImportFile %>" /> 
      </div> 
      <ajaxToolkit:AsyncFileUpload ID="FileUpload1" runat="server" Width="600px" 
UploaderStyle="Traditional" OnUploadedComplete="FileUploadComplete" ThrobberID="throbber" 
       CompleteBackColor="#E9F2FD" OnClientUploadComplete="ShowLink" /> 
      <asp:Image runat="server" ID="throbber" ImageUrl="images/loading.gif" />      
      <br /> 
      <asp:Hyperlink runat="server" ID="openFile" NavigateUrl="~/OpenFile.aspx" Text="Open" 
style="display:none;"/> 
     </ContentTemplate> 
    </asp:UpdatePanel>   
</asp:Content> 

這裏是後面的代碼:

protected void FileUploadComplete(object sender, EventArgs e) 
    { 
     if (FileUpload1.HasFile) 
     { 
      string importName = Server.MapPath(@"Uploads\") + FileUpload1.FileName; 
      FileUpload1.SaveAs(importName); 

      // Import the JSA 
      JSA jsa = new JSA(); 
      jsa.Import(importName); 

      // Show the Hyperlink 
      ShowLink(); 
     } 
    } 

    private void ShowLink() 
    { 
     openFile.Attributes["Style"] = string.Empty; 
    } 

我沒有包含主頁面代碼。它有ToolkitScriptManager。

+0

你如何將樣式設置爲「display:none;」? –

回答

0

如果您發佈一些您已經試過的代碼,以便我們能更好地瞭解您的位置,那將會更有幫助。

{第一次的答案被刪除}

[編輯:我沒聽懂你正在使用AsyncFileUpload當我第一次閱讀問題]服務器正在被訪問

使用AsyncFileUpload更新面板內通過部分回傳,結果其他控件(的超鏈接)不能在服務器上受到影響。這將要求您使用javascript(或最好是jquery)在客戶端上進行更改。

+0

我也試過。我不確定是否是導致問題的AsyncFileUpload。無論我做什麼,超鏈接都不會顯示。 – DrZ

+0

這將工作,如果我使用FileUpload。一旦我使用AsyncFileUpload,它將無法工作。 – DrZ

0

你可以在OnClientUploadComplete函數上做,但你必須像這樣引用超鏈接:<%= hyperLink.ClientID%>。style.display ='block';

另一個更多的asp.net方式是使用更新面板。將超鏈接放入UpdatePanel中,並在文件上傳時在UpdatePanel上設置觸發器。然後在UploadedComplete事件中更改服務器上的可見性。

1

你試圖在客戶端或服務器端顯示?鏈接是客戶端還是服務器端對象? Javascript將是標準的方式。

如果控件是一個客戶端對象:

document.getElementById("hyperlink_name").style.display = "block"; 

或者如果它是一個服務器端對象:

document.getElementById("<%= hyperlink_name.ClientID %>").style.display = "block"; 

我會建議得到jQuery和使用以下,但:

$('#hyperlink_name').show(); 

或者你可以使用ASP.Net鏈接按鈕,並做它服務器端:

linkButton.Visible = true; 
+0

我試圖做一切服務器端。我的所有代碼都在UpdatePanel中,而.Visible不起作用。沒有什麼是爲我工作的。我最後的手段是jQuery,但我會先嚐試一些其他解決方案。謝謝。 – DrZ

+0

一個asp:LinkBut​​ton應該可以工作,你可以發佈你的代碼嗎?它基本上是一個特殊的控件,即服務器端的超鏈接。 –

+0

@DZZ ...查看我之前回答的編輯,來自@Sean的jquery解決方案是您的最佳途徑。您**無法在部分回發期間操作服務器上的超鏈接對象。 –