2009-03-17 18 views
2

私は構造体であるユーザーコントロールを持っている -更新パネルとJavaScript

<updatepanel UpdateMode="Always"> 
<ContentTemplate> 
    <asp:FormView> 
    <EditItemTemplate> 
     <table> 
      <tr id='tr1'> 
      <td> 
       Textbox1 
       btn1 
      </td> 
      </tr> 
      <tr id='tr2'> 
      <td> 
        textbox2 
      </td> 
      </tr> 
     <table> 
    </EditItemTemplate> 
    </asp:FormView> 
</ContentTemplate> 
</updatepanel> 

、ページの読み込みで、私はTR2

ClientScriptManager cs = Page.ClientScript; 
csText.AppendLine(""); 
csText.AppendLine("if(document.getElementById('tr2')!=null) 
      document.getElementById('tr2').style.display = 'none';"); 
csText.AppendLine(""); 
cs.RegisterStartupScript(this, this.GetType(), csName, csText.ToString(), false); 

この部分は正常に動作して非表示にするには、以下を使用します。今すぐbtn1をクリックすると、私はモーダルポップアップエクステンションコントロールをポップアップしています。これによりtr2が再び表示されます。私はスクリプトがupdatePanelとインラインである必要があることを知っています。私はScriptManager.RegisterStartupScript(....);を使ってみましたが動作しません。また、updateModeは、常にポップエクステンションからのデータをTextbox1に入れることができるようにする必要があります。

すべての助けに感謝します。 ありがとうございました

答えて

0

UpdatePanelを使用しているので、実際にはこれにはJavaScriptが必要ありません。

あなたはTR2要素が

...
<tr id="tr2" runat="server"> 

をするように変更した場合、これはあなたがあなたのサーバー側のコードでそれを制御することができます。あなたTR2の列を非表示にするには、単に...

tr2.Style["display"] = "none"; 

これは、コールバックにうまく同期で物事を維持する必要があります。

+0

これは私の最初の解決策でした。この問題は、データが行(tr2)内のコントロールに入力されていて、正しくバインドされていません。つまり、データはポストバック後に受信されません。一番外側のupdatepanel.Onclickのうち、データを取得するためにカスタムイベントを実行しています –

関連する問題