JavaScript方法在ASP.NET用户控件中不起作用 - c#

我问过一个关于JavaScript代码的问题,您可以在这里看到它:How can I scroll down to a multiline TextBox's bottom line, Javascript's scrollIntoView is not working for this。好了,它已经解决,可接受的答案正在起作用。

之后,我不得不将您在该问题中可以看到的代码部分移到一个最终看起来像这样的用户控件中:

 <%@ 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的内置调试器调试网页并将断点放在buttonClicked()函数中,但从未被点击过。然后我使用了按钮的OnClientClick事件并向其添加buttonClicked函数,它适用于每个单击,然后文本框只是跳回到buttonClicked()函数之前的位置。

参考方案

问题在于,用户控件上的控件的ID在某种程度上受到了干扰,因为它们包括用户控件的ID和实际控件的ID。因此,控件的ID可能类似于:ucLiveChatPart_TxtBxOdaMesajlari

解决此问题的简单方法是更改​​此行:

var textBox = $get("TxtBxOdaMesajlari");

至:

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

现在,如果您将JavaScript提取到一个单独的文件中,或者想使用其他方法,则可以将控件ID从codebehind的javascript变量中发出,然后使用它。

在代码背后:

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

并在javascript中:

var textBox = $get(m_TxtBxOdaMesajlariId);

Div单击与单选按钮相同吗? - php

有没有一种方法可以使div上的click事件与表单环境中的单选按钮相同?我只希望下面的div提交值,单选按钮很丑代码输出如下:<input id="radio-2011-06-08" value="2011-06-08" type="radio" name="radio_date&#…

将Web用户控件添加到页面时,asp按钮onclick不会触发 - javascript

我正在使用使用Visual Studio模板创建的Web表单应用程序。模板具有一个内容占位符,该占位符被访问的任何页面的内容替换。有问题的页面有几个服务器控件,例如文本框,标签和按钮。当我单击我的更新按钮时,它可以正常工作,这些值会回传并更新数据库。我想在所有子页面上创建通用的登录提示。我的导航栏(位于我的母版页中)具有引导程序设置。我在导航栏中添加了一个下…

故障排除“警告:session_start():无法发送会话高速缓存限制器-标头已发送” - php

我收到警告:session_start()[function.session-start]:无法发送会话缓存限制器-标头已发送(错误输出开始如果我将表单数据提交到其他文件进行处理,则可以正常工作。但是,如果我将表单数据提交到同一页面,则会出现此错误。请建议<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0…

Asp.net发送信息表单到页面 - c#

我正在尝试使用弹出窗口中的新信息更新旧页面。到目前为止,我尝试过将结果保存在会话中Session["Data"] = DLvrijecampingplaatsen.SelectedItem; 然后当它达到Page_Load时,将其重新加载回旧页面if (Session["Data"] != null) { LBkies…

与Mootools Scriptmanager Ajax Asp.net发生冲突? - c#

我正在尝试不同的方法来使这项工作成功,但是没有成功。我正在尝试将mootools与asp.net应用程序集成。我只想用它为我的网站添加一些效果。我也使用更新面板,scriptmanager,因为不希望有完整的回发。在控制台上引发错误TypeError:clientID.startsWith不是函数,并且在进行更新时brwoser reset...。这是整个代…