0

複数のグリッド ビュー レコードを削除しようとしています。下図のようにしてみました。

       public void btnDelete_Click(object sender, EventArgs e)
        {
            StringCollection orderNumberCollection = new StringCollection();
            if (gridOrders.Rows.Count > 0)
            {
                 foreach (GridViewRow gvrow in gridOrders.Rows)
                    {
                         if (gvrow.RowType == DataControlRowType.DataRow) {
                             CheckBox cbx = (CheckBox)gvrow.Cells[0].FindControl("chkdelete");
                            Label lblOrderNumner = (Label)gvrow.FindControl("labelOrderNumber");
                            Label lastName = (Label)gvrow.FindControl("LabelLastName");
                            if (cbx.Checked && lblOrderNumner != null)
                            {
                                orderNumberCollection.Add(lblOrderNumner.Text);
                            }
                         }
                    }
            }
        if (orderNumberCollection.Count > 0)
        {
            DeleteMultipleOrders(orderNumberCollection);
        }
}

ただし、常に「Checked = false」を示すチェックボックスコントロール。一部のチェック ボックスをオンにしても、チェック ボックス コントロールが常に false と表示されるのはなぜですか?

これが私のグリッドビューコードです:

    <asp:TemplateField> 
    <HeaderTemplate>
    <table><tr><td ><asp:CheckBox ID="chkAll" runat="server" /></td><td><asp:Button ID="btnDelete" runat="server" Text="Delete" OnClick="btnDelete_Click" /></td></tr></table>   
    </HeaderTemplate>
        <ItemTemplate>
            <asp:CheckBox ID="chkdelete" runat="server" Text='<%# Bind("OrderNumber") %>' Font-Bold="false" />
        </ItemTemplate>

    </asp:TemplateField>
4

1 に答える 1

0

これについてはティムと一緒です。グリッドビューを 内から読み込んでいるようですが、Page_Load問題ありません。ただし、あなたの場合、グリッドビューの読み込みコードが次のようになっていることを確認する必要があります。

if(!Page.IsPostBack)
{
  //gridview loading code
}

これにより、削除ボタンをクリックしたときにグリッドビューがリロードされるのを防ぎます (チェックされているボックスが失われます)。

于 2012-07-22T01:27:08.100 に答える