Метод JavaScript не работает в ASP.NET User Control - PullRequest
0 голосов
/ 12 января 2012

Ранее я задавал вопрос о коде JavaScript, который вы можете увидеть здесь: Как прокрутить вниз до нижней строки многострочного TextBox, scrollIntoView в 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() функция больше не работает, я пытался использовать Page.ClientScriptManager.RegisterClientScriptInclude из ответа Скотта , а также этот Page.ClientScript.RegisterClientScriptBlock, ни один из них не работал. Что я могу сделать?

РЕДАКТИРОВАТЬ: Я попытался отладить веб-страницу с помощью встроенного отладчика IE9 и установить точку останова в функции buttonClicked(), но она никогда не была достигнута. Затем я использовал событие OnClientClick кнопки и к нему добавлена ​​функция buttonClicked, она работает для каждого клика, но затем текстовое поле просто возвращается туда, где она была до функции buttonClicked().

1 Ответ

3 голосов
/ 12 января 2012

Проблема заключается в том, что идентификаторы для элементов управления в пользовательском элементе управления несколько искажены в том смысле, что они включают идентификатор пользовательского элемента управления плюс фактический идентификатор элемента управления.Таким образом, идентификатор вашего элемента управления, вероятно, выглядит примерно так: ucLiveChatPart_TxtBxOdaMesajlari.

Простой способ справиться с этим - изменить эту строку:

var textBox = $get("TxtBxOdaMesajlari");

на:

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

Теперь, если вы извлекаете свой javascript в отдельный файл или хотите использовать другой подход, вы можете передать управляющий идентификатор в переменную javascript из codebehind и использовать его вместо этого.

В codebehind:

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

и в javascript:

var textBox = $get(m_TxtBxOdaMesajlariId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...