Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用户控件内的RegisterStartupScript 接近 发送 受保护的无效btnSendChat\u单击(对象发送者,事件参数e) { TextBox txt=this.FindControl(“txtChatMessage”)作为TextBox; 字符串username=lblChatFriend.Text; ucc.InsertMessage(会话[“用户名”].ToString(),用户名,txt.Text); 字符串javaScript=“\n”+“CallScroller();\n”+”; RegisterStartupScript(这个,typeof(ChatUserControl),“startUpScript”,javaScript,false); }_Javascript_Asp.net_.net_User Controls_Registerstartupscript - Fatal编程技术网

用户控件内的RegisterStartupScript 接近 发送 受保护的无效btnSendChat\u单击(对象发送者,事件参数e) { TextBox txt=this.FindControl(“txtChatMessage”)作为TextBox; 字符串username=lblChatFriend.Text; ucc.InsertMessage(会话[“用户名”].ToString(),用户名,txt.Text); 字符串javaScript=“\n”+“CallScroller();\n”+”; RegisterStartupScript(这个,typeof(ChatUserControl),“startUpScript”,javaScript,false); }

用户控件内的RegisterStartupScript 接近 发送 受保护的无效btnSendChat\u单击(对象发送者,事件参数e) { TextBox txt=this.FindControl(“txtChatMessage”)作为TextBox; 字符串username=lblChatFriend.Text; ucc.InsertMessage(会话[“用户名”].ToString(),用户名,txt.Text); 字符串javaScript=“\n”+“CallScroller();\n”+”; RegisterStartupScript(这个,typeof(ChatUserControl),“startUpScript”,javaScript,false); },javascript,asp.net,.net,user-controls,registerstartupscript,Javascript,Asp.net,.net,User Controls,Registerstartupscript,btnSendChat函数位于用户控制代码隐藏文件中。CallScroller函数不会被调用。这是因为在加载DOM时调用了RegisterStartupScript,与jQuery相当: <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ChatUserControl.ascx.cs" Inherits="MetamorphismApp.ChatUserControl" %> <asp:Timer

btnSendChat函数位于用户控制代码隐藏文件中。CallScroller函数不会被调用。

这是因为在加载DOM时调用了
RegisterStartupScript
,与jQuery相当:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ChatUserControl.ascx.cs"
    Inherits="MetamorphismApp.ChatUserControl" %>
<asp:Timer ID="timer1" runat="server" OnTick="timer1_Tick" Interval="5000">
</asp:Timer>
<div id="divChatWindow" class="clChatWindow">
    <div>
        <asp:Label runat="server" Text='<%# Eval("username") %>' class="divHeader" ID="lblChatFriend"></asp:Label>
        <asp:Image ID="imgFriend" runat="server" CssClass="classFriendImage"/>
        <asp:LinkButton ID="lbClose" runat="server" CommandName="Close" CssClass="lbClose"
            OnClick="lbClose_Click">Close</asp:LinkButton></div>
    <div class="chatText" id="idChatText" runat="server">
        <asp:UpdatePanel ID="UpdatePanel" runat="server">
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="timer1" EventName="Tick" />
                <asp:AsyncPostBackTrigger ControlID="btnSendChat" EventName="Click" />
            </Triggers>
            <ContentTemplate>
                <asp:Repeater runat="server" ID="rpChatMessages">
                    <ItemTemplate>
                        <asp:Image ID="imageForFriend" runat="server" CssClass="clFriendsImage" ImageUrl='<%# "HttpImageHandler.jpg?username=" +  DataBinder.Eval(Container.DataItem,"fromusername").ToString() %>' />
                        <asp:Label ID="chatMessage" runat="server" Text='<%# Eval("Message") %>'></asp:Label>
                        <br>
                    </ItemTemplate>
                </asp:Repeater>
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>
    <asp:TextBox ID="txtChatMessage" runat="server" Width="142px" CssClass="clChatMessage"
        TextMode="MultiLine"></asp:TextBox>
    <asp:LinkButton ID="btnSendChat" runat="server" CommandName="Insert" CommandArgument='<%# Eval("username") %>'
        OnClick="btnSendChat_Click">Send</asp:LinkButton>
</div>





protected void btnSendChat_Click(object sender, EventArgs e)
    {
        TextBox txt = this.FindControl("txtChatMessage") as TextBox;
        string username = lblChatFriend.Text;            
        ucc.InsertMessage(Session["username"].ToString(), username, txt.Text);

        string javaScript = "<script type='text/javascript'>\n" + "CallScroller();\n" + "</script>";
        ScriptManager.RegisterStartupScript(this, typeof(ChatUserControl), "startUpScript", javaScript, false);
    }
由于您使用触发器从
UpdatePanel
中的按钮捕获事件,因此实际上是部分呈现视图,这就是为什么在这种情况下注册了
RegisterStartupScript
的脚本永远不会运行的原因

备选方案:

对Sys.load事件作出反应 每次部分呈现页面时都会引发此事件

按如下方式处理事件:

$(function () { ... });
最后,在代码隐藏中,在最适合您需要的情况下打开标志:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:HiddenField  runat="server" ID="hidden" Value="0" />
        ....

就是这样

它说Sys.Application.add\u load是未定义的,与
ScriptManager
相关,因为我假设您的页面上确实有一个,请在scriptSys与您的按钮不相关之前尝试将
添加到您的用户控件中。它是通过
ScriptManager
注入的对象。嗯,给我一点时间,我将使用用户控件测试我必须添加Sys.Application.add_load(函数(){CallScroller();});在document.ready()中,现在我的CallScroller正在运行。。谢谢你,老兄。是的,有道理我在一个简单的页面上测试过
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:HiddenField  runat="server" ID="hidden" Value="0" />
        ....
    protected void btnSendChat_Click(object sender, EventArgs e)
    {
        this.hidden.Value = "1";
    }