5

TemplateFieldにaspチェックボックスを備えたGridViewがあります。TemplateFieldは次のように定義されます。

<asp:TemplateField HeaderText="HeaderName">
    <ItemTemplate>
        <asp:CheckBox ID="checkBoxId" runat="server" OnCheckedChanged="MyCheckChangedMethod" AutoPostBack="true"/>
    </ItemTemplate>
</asp:TemplateField>

MyCheckChangedMethod内にブレークポイントを指定してWebプロジェクトを実行し、チェックボックスをクリックしても何も起こりません。ブレークポイントはヒットしません。VisualStudioデバッガーが実行されています。

さらに、ページ定義にAutoEventWireup = Trueがあるため、手動でイベントをフックする必要はありません。私はこれまでこの方法で問題が発生したことはありません。同じページにクリックイベントとまったく同じ方法でボタンを設定すると、ブレークポイントが正常にヒットします。

何か案は?

4

4 に答える 4

6

AutoPostback = Trueタグを追加する必要がありますasp:CheckBox

于 2009-12-16T02:14:38.737 に答える
6

この問題はDataBind、制御イベントが発生する前にが呼び出されたときに発生します。呼び出す場合は、それDataBindPage_Load入れて 、イベントハンドラー自体if (!isPostBack) {}を呼び出します。DataBind

于 2011-04-13T11:52:53.677 に答える
5

チェックボックスコントロールのポストバックイベントは、コントロールのIDを壊すGridView内にあるため、正しく発生しません。

データを反映するためにチェックボックスが必要な場合は、CheckBoxFieldオブジェクトを使用して、その方法でバインドできます。

行に対してアクションを実行する必要がある場合は、 CommandNameプロパティとRowCommandイベントを使用してButtonFieldオブジェクトを確認することをお勧めします。

GridViewサーバー側のチェックボックスにアクセスする方法があります。

于 2009-08-17T19:09:17.583 に答える
0

試す:

<asp:CheckBox  ID="checkBoxId" runat="server" AutoPostBack=true OnCheckedChanged="MyCheckChangedMethod"/>

aspxページの上部にCodeFile="YOUR_FILE.aspx.cs"があることを確認してください。

また、関数MyCheckChangedMethodが次のように定義されていることも確認してください。

関数にはオブジェクト送信者、EventArgseが必要です。

public void MyCheckChangedMethod(object sender, EventArgs e)
{
  bool b = false;//your data here
}

また、web.configのデバッグがtrueに設定されていることを確認してください(すでに完了していると考えてください)。

于 2009-08-17T17:23:01.557 に答える