2011-06-30 6 views
0
を使ってコントロールを表示/非表示にする方法

これは本当に基本的に聞こえるはずですが、私は本当にここで困惑しています。私がしようとしているのは、プロセスが完了したらハイパーリンクを表示することです。このプロセスはAsyncFileUploadです。 ASPXページでは、最初のページの読み込み時に非表示にしますが、非表示にします。私がStyle = "display:none;"を設定すると、動作しているようだが、ファイルをアップロードした後、私が何もしないと、コントロールが再度表示されます。ファイルがアップロードされると、FileUploadCompleteという関数が呼び出されます。私が何をしても、ハイパーリンクは表示されません。AJAX(AjaxControlToolkit)とC#

:ここ

すべてのヘルプは大歓迎です:)

をありがとう、 デイブ

は(最近追加されたJavaScriptで)ASPXコード

<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

あなたがすでにいるコードを投稿して、あなたがどこにいるかをよりよく知ることができれば、もっと役に立ちます。

[EDIT:私は最初の質問を読んだとき、あなたがAsyncFileUploadを使用していることをキャッチしていない]

を{最初の答えは削除}サーバがアクセスされている更新パネルの内側にAsyncFileUploadを使用して

をその結果、他のコントロール(ハイパーリンク)はサーバーにあるの影響を受けません。部分ポストバックこれには、クライアントで変更を行うためにjavascript(、または好ましくはjquery)を使用する必要があります。

+0

私もこれを試しました。問題の原因となっているAsyncFileUploadなのかどうかはわかりません。私が何をしてもハイパーリンクは表示されません。 – DrZ

+0

私はFileUploadを使用する場合、これは動作します。 AsyncFileUploadを使用すると、動作しません。 – DrZ

0

これはOnClientUploadComplete関数で実行できますが、次のようにハイパーリンクを参照する必要があります。<%= hyperLink.ClientID%>。style.display = 'block';

もう1つのasp.net方法は、更新パネルを使用することです。ハイパリンクをUpdatePanelに入れ、ファイルのアップロード時にUpdatePanelにトリガーを設定します。 UploadedCompleteイベントでサーバー上の可視性を変更します。

1

クライアント側またはサーバー側で表示しようとしていますか?リンクはクライアント側のオブジェクトかサーバー側のオブジェクトですか? Javascriptは標準的な方法です。コントロールは、クライアント側のオブジェクトである場合

:私はjQueryのを取得し、しかし、次を使用することをお勧めします

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

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

それとも、サーバー側のオブジェクトである場合

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

また、ASP.Netリンクボタンを使用してサーバー側で行うこともできます。

linkButton.Visible = true; 
+0

私はすべてのサーバー側をやろうとしていました。私のコードはすべてUpdatePanelにあり、.Visibleは機能しません。何も私のために働いていません。私の最後の手段はjQueryですが、まずこれらの他のソリューションのいくつかを試してみましょう。ありがとうございました。 – DrZ

+0

asp:LinkBut​​tonが動作するはずです。コードを投稿できますか?基本的にサーバー側のハイパーリンクである特別なコントロールです。 –

+0

@DrZ ... @Srのjqueryの解決策は私の以前の答えの編集をご覧ください。あなたは、**部分的なポストバックの間、サーバー上のハイパーリンクオブジェクトを**操作することはできません。 –

関連する問題