0

私は、テキスト領域にメモを作成する Web ページです。初めてページをロードすると、すべて正常に動作します。つまり、ポストバックしてデータベースに書き込みます。ここで、ページをリロードせずに、ドロップダウン値を変更してデータベースに書き込もうとすると、コードに基づいて重複するエントリが書き込まれず、テキスト領域に作成されたメモが消去されます。 (これは更新パネルにあります)しかし、ドロップダウン値を変更すると、次に連続して、テキスト領域に実際にメモを作成するJavaスクリプトが起動されず、単にテキスト領域が空白になります。どんな助けでも大歓迎です。

   <asp:UpdatePanel> 
         <asp:TextBox ID="txtGenVVOE" name= "txtGenVVOE"  TextMode="MultiLine"
                                                runat="server"  style="font-size:  11px" rows="4" cols="44" Width="324px"></asp:TextBox></td></tr>
         <tr>  <td valign="top" align="center" width="50%"> 
  <asp:Button ID="btnCopy"
    class="btn"  runat="server" onmouseover="this.className='btn btnhov'"
                                onmouseout="this.className='btn'" style="background: silvergradient"   Text="COPY"
     OnClientClick="ClipBoard();return false;"
           ToolTip="Copy Text to ClipBoard"  />      /td></tr> <end update Panel>

メモを作成する前にフィールドを検証する validate() というメモを作成する .js スクリプトがあります。

function validate() {

create_note() // フォームのすべてのフィールドに基づいてメモを作成します。}

したがって、前述したように、この関数の検証は button_click OnClientClick イベントにあり、ページをリロードせずにボタンがクリックされたときに呼び出されません。更新パネルへのポストバックが行われた後、スクリプトがロード時に一度だけ呼び出され、その後では呼び出されない理由を理解するのに助けが必要です。前もって感謝します。

4

1 に答える 1

0

ClientScript.RegisterStartUpScript ( http://msdn.microsoft.com/en-us/library/z9h4dk8y.aspx )を使用して、コード ビハインドでスクリプトを再登録する必要があります。

ポストバックを引き起こすコードでは、次のようなことをしたいと思うでしょう:

Dim script as string = "<script type=""text/javascript"">validate();</script>"
ClientScript.RegisterStartupScript(me,me.gettype(),"NameYourScript",script,false)

RegisterStartupScript がヒットしない場合は、RegisterClientScriptBlock ( http://msdn.microsoft.com/en-us/library/btf44dc9.aspx )を試してください。

パネルの更新に関しては、どれが問題になるのか思い出せません。

于 2013-06-18T05:52:43.437 に答える