web-dev-qa-db-ja.com

選択した行をDataGridViewから削除するにはどうすればよいですか?

DataGridViewButtonがあります。行が選択されている場合は、ボタンをクリックして削除します。 RemoveAtSelectedRowsなどのコマンドをいくつか試しましたが、何も機能しませんでした。どうすればそれを解決できますか?

私は次のようなことを試しました:

 if (dataGridView2.SelectedRows.Count > 0)
        {

                DataGridViewSelectedRowCollection rows =   dataGridView2.SelectedRows;
                dataGridView2.Rows.RemoveAt(rows);

        } 

ただし、RemoveAtメソッドは整数のみを受け入れます。選択したセルで試してみる前に、常にセルが選択されているため、彼はすべての行を削除しました。

6
MKX2015

選択した行をDataGridViewから削除したいだけの場合は、次のようにします。

_foreach (DataGridViewRow row  in yourDataGridView.SelectedRows)
{
     yourDataGridView.Rows.RemoveAt(row.Index);
}
_

RemoveAt(rows)を使用したため、コードは機能しませんでしたが、RemoveAtは、削除する行のインデックスのみを受け入れます。 DataGridViewSelectedRowCollectionを渡します。上記のように、 _DataGridViewRow.Index_ を介して行のインデックスを取得できます。

12
Tim Schmelter

選択しようとしている行をプログラムで見つけることができます。

dataGridViewX.Rows[0].Selected = true;

次に、選択した行を削除します。

dataGridViewX.Rows.RemoveAt(dataGridViewX.SelectedRows[0].Index);
0
Oddacon

モデルのリストを使用している場合は、次のコードが役立ちます。

 foreach (DataGridViewRow row in dataGridViewX.SelectedRows)
            {
                var val = (int)row.Cells[0].Value;
                Products.Remove(Products.Find(d => d.ProductId == val));
            }
            dataGridViewX.DataSource = null;
            dataGridViewX.DataSource = Products;
0
Ravi Anand

もうすぐです-次のコードスニペットを試してください

if (dataGridView1.SelectedRows.Count > 0) {
   DataGridViewSelectedRowCollection row = dataGridView1.SelectedRows;
   // taking the index of the selected rows and removing/
   dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
}
else {  //optional    
   MessageBox.Show("Please select a row");
}
0
Sanal Azmin

私はこれを横切ってカムし、正しい答えを見つけられませんでした、行を削除するとき、この行がコレクションの最初である場合、他のすべての行のインデックスが変更され、他の行を削​​除する可能性があります。 selecteditemsカウントはゼロに等しい。または、選択した他の行を見逃す可能性があります。

これが私の方法です:

 while (dataGridView1.SelectedRows.Count > 0)
        dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
0
Yasser Gersy

これを試してみてください、それが助けになることを願っています

1。削除を有効にするには、AutoGenerateDeleteButtonをtrueに設定し、SqlDataSourceで削除コマンドを指定します。

 DeleteCommand="DELETE From [stores] WHERE [stor_id] = @stor_id"

2。ここでは、指定された行を削除する前に確認メッセージを表示しようとしています。これを行うには、確認メッセージを表示するための小さなJavascriptコードを作成する必要があります。

 function isDelete()
  {
    return confirm("Do you want to delete this row ?");
  }

LinkBut​​tonの削除のOnClientClickイベントでこのJavascript関数を呼び出す必要があります。

<asp:LinkButton ID="DeleteBtn" runat="server" CommandName="Delete"
OnClientClick="return isDelete();">Delete</asp:LinkButton>

4。次のASP.NETプログラムは、指定された行を削除する前に、Gridviewから行を削除し、確認メッセージを表示する方法を示しています。

Default.aspx ///ページ

![<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
    <script type="text/javascript">
        function isDelete()
        {
            return confirm("Do you want to delete this row ?");
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"
    AllowSorting="True" DataSourceID="SqlDataSource1" AllowPaging="True" DataKeyNames="stor_id" >
        <Columns>
        <asp:BoundField ReadOnly="True" HeaderText="stor_id"
        DataField="stor_id" SortExpression="stor_id"></asp:BoundField>
        <asp:BoundField HeaderText="stor_name" DataField="stor_name"
        SortExpression="stor_name"></asp:BoundField>
        <asp:BoundField HeaderText="stor_address" DataField="stor_address"
        SortExpression="stor_address"></asp:BoundField>
        <asp:BoundField HeaderText="city" DataField="city"
        SortExpression="city"></asp:BoundField>
        <asp:BoundField HeaderText="state" DataField="state"
        SortExpression="state"></asp:BoundField>
        <asp:BoundField HeaderText="Zip" DataField="Zip"
        SortExpression="Zip"></asp:BoundField>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:LinkButton ID="DeleteBtn" runat="server" CommandName="Delete"
                OnClientClick="return isDelete();">Delete
                </asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        </Columns>
    </asp:GridView>
    <div>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server"
    ConnectionString="<%$ ConnectionStrings:SQLDbConnection %>"
    SelectCommand="select * from stores"
    DeleteCommand="DELETE From \[stores\] WHERE \[stor_id\] = @stor_id" >
    <DeleteParameters>
        <asp:Parameter Name="stor_id" Type="String" />
    </DeleteParameters>
    </asp:SqlDataSource>
    </div>
    </form>
</body>
</html>]

これが写真です

Check this picture it's might help you

0
McElie