2016-12-17 13 views
0

私はbtnConfirmbtnAbortという2つのボタンを持つASP.NETページを持っています。 btnConfirmの幅は設定されていないため、自動的にサイズに合わせて調整されます。
btnAbortの幅をbtnConfirmとしたいと思います。自動サイズ調整された別のボタンと一致するようにボタンの幅を調整します

問題:どちらのボタンも初期状態では表示されませんpanelこれはアップデートパネルのボタンをクリックすると表示されます。つまり、最初はボタンがページに存在しません。

解決策はありますが、通常は表示されているコントロールに適用されます。私が見つけたソリューション/しようとした両方のボタンに

設定された固定幅
ている私はあることを行っている方法を大きなフォントを確認することはできませんので、私は、それを望んでいません。私はコードビハインドでbtnAbortの幅を設定しようとした
の背後にあるコードで

設定幅。 Iは、Page_Loadならびにパネル

pnlConfirm.Visible = true; 
btnAbort.Width = btnConfirm.Width; 

しかし、btnConfirm.Widthは、それが表示されている場合でも、依然として空であることを示しButton_Clickハンドラにそれを試してみました。 JavaScriptの
て幅を設定し

私はしかし、ブラウザでデバッグするから、AbortbtnConfirmbtnが原因であることに(常にゼロであることを思わページの先頭

<script type="text/javascript"> 
    var Abortbtn = document.getElementById("<%= btnAbort.ClientID %>"); 
    var Confirmbtn = document.getElementById("<%= btnConfirm.ClientID %>"); 
    Abortbtn.style.width = Confirmbtn.style.width; 
</script> 

にスクリプトを追加invisible私は推測する)、UpdatePanelがパネルを表示するように更新されたときにスクリプトは再度実行されない。


widthプロパティをバインド私はPage_LoadPage.DataBind()と呼ばれる他のボタンにWidthプロパティをバインドする

<asp:Button runat="server" Width="<%# btnConfirm.Width %>" ID="btnAbort" Text="Abort" OnClick="Abort_Clicked" /> 

btnAbortマークアップを変更しました。これは何も変更していないようです(おそらく、最初にWidthプロパティbtnConfirmが設定されていないためです)。

今私はアイデアがありません。これはコントロールのサイズを動的に保つために行うことができますか?固定幅に設定し、それを使って終了する必要がありますか?

答えて

1

UpdatePanelの更新後にJavaScriptコードを実行する必要があります。 BeginRequestHandler機能がUpdatePanel開始が更新されるたびに呼び出され、EndRequestHandler機能がUpdatePanelが更新されるたびに呼び出され、上記のコードでは

<script type="text/javascript"> 
    function BeginRequestHandler(sender, args) { 
     //code that runs when an UpdatePanel starts refreshing 
    } 

    function EndRequestHandler(sender, args) { 
     //code that runs when an UpdatePanel has finished refreshing. 
     var Abortbtn = document.getElementById("<%= btnAbort.ClientID %>"); 
     var Confirmbtn = document.getElementById("<%= btnConfirm.ClientID %>"); 

     // If this is true, both buttons exist in DOM 
     if(Abortbtn != null && Confirmbtn != null) { 
      Abortbtn.style.width = Confirmbtn.offsetWidth+"px"; 
     } 
    } 

    var prm = Sys.WebForms.PageRequestManager.getInstance(); 

    prm.add_beginRequest(BeginRequestHandler); 
    prm.add_endRequest(EndRequestHandler); 
</script> 

:あなたは、次のコードを使用することができます。

UpdatePanelが更新された場合、これらのハンドラがトリガされるため、エラーを回避するために何らかのチェックが必要になることがあります。

+0

素晴らしいトリックです。これは正しい軌道に乗った。しかし、 'Confirmbtn.style.width'は実際に私に幅をもう一度与えませんでした。代わりに' Abortbtn.style.width = Confirmbtn.offsetWidth + "px"; 'という行を使用しなければなりませんでした。この詳細を変更して現場で実用的な解決策を得ることができれば素晴らしいだろう。 – Jens

+0

私の答えを更新しました。 –

関連する問題