2009-04-30 11 views
3

私はWebページで自分のユーザーコントロールを動的に呼び出しています。 ユーザーコントロールのボタンを初めてクリックしたときにイベントが発生していません。 2回目に同じボタンをクリックすると、イベントが発生しています。UserControlイベントが初めて機能しない

誰か助けてくれますか?

答えて

2

コントロールのクライアントIDは、INamingContainerインターフェイスでマークされているすべてのコントロールのIDから派生しています。したがって、階層内のすべてのコントロールに固定IDが設定されていることを確認してください。

たとえば、リピーター内にButtonコントロールがある場合、ボタンのIDとリピーターが連結されてボタンのクライアントIDが作成されます。したがって、リピーターとボタンの両方は、ポストバック全体で同じIDを持つ必要があります。

最初のリクエストのHTMLと2番目のリクエストのHTMLを比較して、これが問題かどうかを迅速に判断できます。

+0

これは私が苦労している問題を解決しました! –

1

ダイナミックに作成されたコントロールのIDを割り当てます。それ以外の場合、イベントは発生しません。

3

ボタンのOnClickイベントへの接続は、すべてのページの読み込みで発生するわけではありません。これは必須です。

コントロールを追加したときとポストバック後に接続が行われていることを保証できますか?私はいつも私のイベントフックをPage_InitまたはPage_Loadイベントハンドラに入れ、ポストバックチェックの外に置いています。ハンドラのフックにブレークポイントを置いて、ブレークポイントが2回 "ヒット"するかどうか確認してください。

ボタンのイベントフックアップは次のようになります。

protected void Page_Load(object sender, EventArgs e) 
{ 
    btnSearch.Click += new EventHandler(btnSearch_Click); // breakpoint on this line 
} 
0

あなたはボタンを押す前に全ページのダウンロードを待っていますか?

イベントは、ページのASP.Netによって隠されたjavascript関数です。クリックすると表示されないことがあります。

関連する問題