1

次のようなチェックボックスの列を含むようにグリッドビューをセットアップしました。

                    <asp:TemplateField HeaderText = "Editor">
                        <ItemTemplate>
                             <asp:CheckBox ID="chkRemove" runat="server" AutoPostBack="false" Checked='<%#currentMember(Eval("GroupID")) %>' />
                        </ItemTemplate>
                    </asp:TemplateField>

関数 currentMember は、true または false を返します。

ユーザーは、行のチェックを外してメンバー ステータスを削除できます。

ユーザーがサブミットを押したら、データベースを更新できるように、ユーザーがチェックを外した行をどのように判断すればよいでしょうか?

4

3 に答える 3

2

次のコードを送信ボタンのクリック ハンドラに追加します。

for (int i = 0; i < gridView.Rows.Count; i++)
{
    CheckBox cbox = (CheckBox)gridView.Rows[i].FindControl("chkRemove");
    if(cbox.Checked){
        //DO DATABASE STUFF
    }
}   
于 2012-12-17T20:49:15.397 に答える
1

イベント ハンドラー コードで、次の手順を実行します。

行を取得します。

GridViewRow row = GridView1.Rows

次に、行ごとに CheckBox コントロールを見つけます。

CheckBox checkBox = row.FindControl("chkRemove")

コントロールがチェックされていないかどうかを確認します。

checkBox.Checked == false

最後に、データ キーとして GridView にバインドしたレコード ID を収集します。

int id = (int)GridView1.DataKeys[row.RowIndex].Value;

これで、データベースを更新するために必要な情報が得られたはずです

于 2012-12-17T20:47:59.980 に答える
1

これは受け入れられた回答と同じですが、C#プログラミング規則を使用しています。受け入れられた回答は、Java でも使用される C/C++ 規則を使用しています。それは間違っていませんが、眉をひそめています。

 protected void Button1_Click(object sender, EventArgs e)
        {
            GridViewRowCollection rows = ItemsGridView.Rows;

            foreach (GridViewRow gvr in rows){
                CheckBox chk = (CheckBox)gvr.FindControl("chkremove");
                if (chk.Checked)
                {
                    //Do stuff here
                }
            }
        }
于 2013-01-23T13:15:01.147 に答える