2012-01-12 7 views
0

JavaScriptコードについての質問は、How can I scroll down to a multiline TextBox's bottom line, Javascript's scrollIntoView is not working for thisで確認できます。さて、それは解決され、受け入れられた答えが働いていた。ASP.NETユーザーコントロールでJavaScriptメソッドが動作しない

は、その後、私はあなたが最終的にこのように見えたユーザーコントロールにその質問に見ることができるコードの一部を移動しなければならなかった:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LiveChatPart.ascx.cs" Inherits="BeyzamComArayuz.LiveChatUserControl.LiveChatPart" %> 
<%@ Register src="/LiveChatUserControl/GenelOdaFlashPart.ascx" tagname="GenelOdaFlash" tagprefix="gOF" %> 
<script language="javascript" type="text/javascript"> 
function buttonClicked() { 
    //   var el = document.getElementById("TxtBxOdaMesajlari"); 
    var textBox = $get("TxtBxOdaMesajlari"); 
    textBox.scrollTop = textBox.scrollHeight; 
    //   $get("TxtBxOdaMesajlari").scrollIntoView("false"); 
} 
</script> 
<asp:ScriptManager ID="ScrptMngr" runat="server"></asp:ScriptManager> 
<tr> 
          <gOF:GenelOdaFlash runat="server"></gOF:GenelOdaFlash> 
          <td valign="top" align="left"> 
           <table> 


           </table> 
          </td> 
          <td valign="top" align="left"> 
           <table> 
            <tr> 
             <td> 
              buraya imajlar gelecek - chip vs. 
             </td> 
            </tr> 
            <tr> 
             <td> 
              <asp:ListBox ID="LstBxOdadakiKullanicilar" runat="server" 
              Width="175" Height="281" Enabled="false"> 
               <asp:ListItem Value="1" Text="Bir"></asp:ListItem> 
              </asp:ListBox> 
             </td> 
            </tr> 
            <tr> 

             <td> 
              <asp:UpdatePanel ID="UpdtPnlButtonlar" runat="server"> 
               <ContentTemplate> 
                <table> 
                 <tr> 
                  <td> 


                <asp:Button ID="ButtonOdadanCik" runat="server" Text="Odadan Çık" Width="175" Height="22" /> 
                <asp:Button ID="ButtonHediyeGonder" runat="server" Text="Hediye Gönder" Width="175" 
                 Height="22" /> 
                <asp:Button ID="ButtonFullEkran" runat="server" Text="Full Ekran" Width="175" Height="22" /> 

                 <table> 
                  <tr> 
                   <td> 
                    <asp:Panel ID="PnlKontroller" runat="server" GroupingText="Kontroller" 
                    Visible="false"> 
                     <table> 
                      <tr> 
                       <td> 
                        <asp:Label ID="LblChatTuru" runat="server" Text="Ücretsiz!"></asp:Label> 
                       </td> 
                      </tr> 
                      <tr> 
                       <td> 
                        <asp:Button ID="BttnSohbetTuruDegistir" runat="server" 
                        Width="175" Text="Sohbet Türü Değiştir" 
                        OnClick="BttnSohbetTuruDegistir_click" /> 

                        <asp:Button ID="BttnMolaVer" runat="server" 
                        Width="175" Text="Mola Ver" OnClick="BttnMolaVer_click" /> 
                       </td> 
                      </tr> 
                     </table> 

                 </asp:Panel> 
                   </td> 
                  </tr> 
                 </table> 


                </td> 

                 </tr> 

                </table> 
               </ContentTemplate> 
              </asp:UpdatePanel> 

               <asp:Button ID="ButtonOzelSohbet" runat="server" Text="Özel Sohbet" Height="108" 
                 Width="175" OnClick="ButtonOzelSohbet_click" /> 
                <asp:Panel ID="PnlOzelSohbetKamera" runat="server" Visible="false">               
               <asp:Label ID="asd" runat="server" Text="zsa"></asp:Label> 
                <div id="ozelOdaKamera" style="height: auto; float: left;"> 
               <script type="text/javascript" src="/jwplayer/swfobject.js"></script> 
               <script type="text/javascript"> 
                //   For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. 
                var swfVersionStr = "11.1.0"; 
                //   <!-- To use express install, set to playerProductInstall.swf, otherwise the empty string. --> 
                var xiSwfUrlStr = "playerProductInstall.swf"; 
                var flashvars = {}; 
                var params = {}; 
                params.quality = "high"; 
                params.bgcolor = "#FFFFFF"; 
                params.allowscriptaccess = "sameDomain"; 
                params.allowfullscreen = "true"; 
                var attributes = {}; 
                attributes.id = "uyeOzelOdaKameraFlash"; 
                attributes.name = "uyeOzelOdaKameraFlash"; 
                attributes.align = "middle"; 
                swfobject.embedSWF(
                     "/Images/uyeOzelOdaKameraFlash.swf", "ozelOdaKamera", 
                     "220", "150", 
                     swfVersionStr, xiSwfUrlStr, 
                     flashvars, params, attributes); 
                //   <!-- JavaScript enabled so display the flashContent div in case it is not replaced with a swf object. --> 
                swfobject.createCSS("#flashContent", "display:block;text-align:left;"); 
                </script>              
              </div> 
                </asp:Panel> 

             </td> 

            </tr> 
           </table> 
          </td> 
         </tr> 
         <tr> 
             <td style="padding-left:8px;"> 
              <asp:UpdatePanel ID="UpdtPnlMesajlar" runat="server" EnableViewState="true"> 
               <ContentTemplate> 
                <table> 
                 <tr> 
                  <td> 
                   <table> 


                 <tr> 
                  <td> 
                   <%--<div id="satir">--%> 

                   <asp:TextBox ID="TxtBxOdaMesajlari" runat="server" 
                   ReadOnly="true" TextMode="MultiLine" 
                   Height="100" Width="350">                   
                   </asp:TextBox> 
                   <%--</div>--%> 
                  </td> 
                 </tr> 

                 <tr> 
                  <td> 
                   <asp:TextBox ID="TxtBxMesaj" runat="server" Width="285"></asp:TextBox> 
         <%--this is the button which should run the javascript function--%> 
                   <asp:Button ID="BttnGonder" runat="server" Text="Gönder" 
                   Width="58" OnClick="BttnGonder_click"/> 
                  </td> 
                 </tr> 

                    </table>  
                  </td> 
                  <td valign="top"> 

                  <asp:Panel ID="PnlAktiviteKayitlari" runat="server" 
                  Visible="false" GroupingText="Aktivite Kayıtları"> 
                   <table> 
                    <tr> 
                     <td valign="top"> 
                      <asp:ListBox ID="LstBxAktiviteKayitlari" runat="server" 
                      Enabled="false" Width="128"> 
                    <asp:ListItem Value="1" Text="Bir giriş yaptı"></asp:ListItem> 
                    </asp:ListBox> 
                     </td> 
                    </tr> 

                   </table> 

                  </asp:Panel> 

                  </td> 
                 </tr>           
                </table> 
               </ContentTemplate> 
              </asp:UpdatePanel> 
             </td> 
            </tr> 

そしてasp.csファイルに私が

protected void BttnGonder_click(object sender, EventArgs e) 
     { 
      string cariId = ""; 
      if (KullaniciTuru == 1) 
      { 
       cariId = Session["ModelId"].ToString(); 

      } 
      else 
      { 
       cariId = Session["UyeId"].ToString(); 
      } 
      string uyeHesapAdi = BAL.Cari.Cari.GetCariHesapAdi(int.Parse(cariId)); 

      string mesaj = uyeHesapAdi + " : " + TxtBxMesaj.Text; 
      TxtBxOdaMesajlari.Text = TxtBxOdaMesajlari.Text + Environment.NewLine + mesaj; 
      //TxtBxOdaMesajlari.Focus(); 

      ScriptManager.RegisterStartupScript(this, this.GetType(), "txtbxmesajlarslide", "buttonClicked();", true); 
      TxtBxMesaj.Text = string.Empty; 
     } 

を持っています私の問題は、buttonClicked()の機能がもう機能していないということです。ScottS's answerからPage.ClientScriptManager.RegisterClientScriptIncludeを使用しようとしましたが、このPage.ClientScript.RegisterClientScriptBlockもどちらも機能しませんでした。私は何ができますか?

編集:私はIE9のデバッガを内蔵したWebページをデバッグし、buttonClicked()機能にブレークポイントを入れてみましたが、それは私がボタンのOnClientClickイベントを使用hit.Thenはなかったし、それが動作し、それにbuttonClicked機能を追加しました各クリックのテキストボックスは、buttonClicked()が機能する前の位置にジャンプします。

答えて

3

問題は、ユーザーコントロールのIDと実際のコントロールのIDを含むという点で、ユーザーコントロールのコントロールのIDが多少混乱していることです。コントロールのIDはおそらく次のようになります:ucLiveChatPart_TxtBxOdaMesajlari

これを処理する簡単な方法は、この行を変更することです:あなたは別のファイルにあなたのjavascriptを抽出したり、別のを使用したい場合は、

var textBox = document.getElementById('<%= TxtBxOdaMesajlari.ClientID %>'); 

:に

var textBox = $get("TxtBxOdaMesajlari"); 

をアプローチでは、codebehindからjavascript変数にコントロールIDを渡して代わりに使用することができます。分離コードで

ScriptManager.RegisterStartupScript(this, this.GetType(), "TxtBxOdaMesajlariId", "var m_TxtBxOdaMesajlariId = '" + TxtBxOdaMesajlari.ClientID + "'";, true); 

とJavaScriptで:

var textBox = $get(m_TxtBxOdaMesajlariId); 
+0

やあああ先生、ありがとうございましたが、これはanything.Thatは私が今の更新をチェックしています更新前だった変化はなかったです。 – Bastardo

+0

@RoboLover:おそらく '$ get'の代わりに' document.getElementById'を使うだけです(これは私が答えで修正したものです)。それが失敗した場合、私は答えに追加したコードビハインドアプローチを試すこともできます。 –

+0

さて、私はコードビハインドのアプローチを試してみる必要があります。他の人は今は動作しませんでした。本当にありがとうございます。 – Bastardo

関連する問題