0

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がユーザーコントロール内でうまく機能していないようです。

4

2 に答える 2

0

DataBind()メソッドのコードをに移動しますOnPreRender。これは機能するはずです。Messageその理由は、ページサイクルのどのステップ(init、load、bindなど)からどのコードがプロパティを変更するのかわからないためです。

あなたの場合のように、あなたがMessageプロパティを設定しているボタンクリックイベントがあるようです。Notification1コントロールはすでにデータバインドされているため、これは遅すぎます。

最新のステージのままにしておくと、機能します。

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

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

    }
于 2012-07-06T00:54:30.873 に答える
0

エラーは、aspxページの関数を呼び出していたボタンが更新パネル内にあり、それを機能させるためにトリガーイベントを追加する必要があることを発見しました。エラーの原因となった更新パネルの助けに感謝します。 ((

于 2012-07-06T17:17:24.203 に答える