【问题标题】:jquery function doesn't work when called from usercontrol从用户控件调用时,jquery 函数不起作用
【发布时间】:2012-07-06 00:14:59
【问题描述】:

我有一个包含 2 个用户控件的 aspx 页面

UC1:编辑页面 - 这有用于编辑或数据输入的字段。

UC2:通知页面 - 这有一个带有 jquery 功能的简单消息框

在我的 aspx 中,我有这个功能:

public void ShowMessage(string status, string message)
    {
        Notification1.Message = message; //this is my user control UC2
        Notification1.Status = status;
        Notification1.DataBind();
    }

现在,当我的 aspx 页面需要显示一条消息时,这可以正常工作,但是当我希望用户控件 1 显示一条消息(如(无效字段或错误数量))时,它什么也不做。现在它被调用了,但 jquery 只是不响应它。

在 UC2 -通知用户控件中,这就是我所拥有的:

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.4.js"></script>
<script type="text/javascript">
function showMsg(classname) {
    $("#MsgBox").attr('class', classname);
    $("#MsgBox").show().delay(5000).fadeOut();
}
</script>
<div id="MsgBox" class="info"><asp:Label ID="lblMessage" runat="server" /></div>

代码隐藏

 public string Status{ get; set; }
    public string Message { get; set; }
    public override void DataBind()
    {
        if (Message != string.Empty)
        {

            lblMessage.Text = Message;
            Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "showMsg('" + Status + "');", true);
        }

    }

这就是我将函数从用户控件调用到 aspx 页面的方式:

((myaspxpage)this.Page).ShowMessage("error", "This is my error message.");

任何帮助将不胜感激!如果需要更多详细信息,请告诉我。提前致谢。

**编辑:我尝试将 jquery 和消息框放在我的编辑页面中,看看它是否会以这种方式工作,但事实并非如此 所以看来 jquery 在用户控件中无法正常工作??

【问题讨论】:

  • 你确认你的 jquery 源被找到了吗?
  • @Jeff 我在 Chrome 中的控制台中通常不会出现任何错误,如果它找不到源代码,那么它会告诉你对吗?

标签: c# jquery asp.net user-controls


【解决方案1】:

DataBind() 方法的代码移动到OnPreRender。这应该有效。原因是您不知道页面循环的哪个步骤(初始化、加载、绑定...)中的哪个代码会更改 Message 属性。

就像您的情况一样,您似乎有一个按钮单击事件,您可以在其中设置 Message 属性。这为时已晚,因为您的 Notification1 控件已经是数据绑定的。

将其保留为最新阶段使其工作:

protected override void OnPreRender()
    {
        if (Message != string.Empty)
        {

            lblMessage.Text = Message;
            Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "showMsg('" + Status + "');", true);
        }

    }

【讨论】:

  • 我会试试的,然后告诉你。谢谢
  • 它仍然不会显示,它会被调用并正确完成该过程,但它不会显示..当我检查 html 时,消息标签中没有任何内容..
【解决方案2】:

我发现错误是我在 aspx 页面中调用函数的按钮位于更新面板内,我需要添加一个触发事件以使其工作。感谢大家的帮助,这是更新面板造成的错误:(

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 2013-05-05
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 2021-01-30
    相关资源
    最近更新 更多