1

onBlur() イベントがないため、基本的に RadTextBox を拡張するカスタム Web コントロールを作成しています。.ascx ファイルにスクリプトを追加しました。スクリプトを登録しようとしていますが、失敗します。ここで何が欠けているのかわかりません。

<script language="javascript">
    function handleLostFocus(o) {
        aler(o.toString());
    }
</script>

public partial class MyTextBox : RadTextBox, IScriptControl
{
    private void RegisterScripts()
    {
        try
        {
            String csname1 = "handleLostFocus";
            Type cstype = this.GetType();

            String cstext1 = "alert('Hello World');";
            ScriptManager.RegisterStartupScript(this, cstype, csname1, cstext1, true);
        }
        catch (Exception ex)
        {

        }
    }

    public MyTextBox()
    {
        Attributes.Add("padding", "5px");
        Skin = "Office2007";
        Attributes.Add("onBlur", "handleLostFocus(this);");

        RegisterScripts();
    }
}
4

1 に答える 1

2

クラスのコンストラクターで RegisterScripts を呼び出しています。コントロールはまだコンストラクターのページにないため、まだページにないコントロールのスタートアップ スクリプトを登録することはできません。

これを行うのに最適な場所は Init メソッドだと思います。これを行うには、コンストラクターの呼び出しを次のように置き換えます。

Init += (s,e) => { RegisterScripts(); };

(コントロールに完全な Init メソッドを作成することもできますが、これは簡略版です)

于 2012-12-11T23:55:51.730 に答える