C# 从DataGridView和数据库中删除任何行

C# 从DataGridView和数据库中删除任何行,c#,winforms,datagridview,delete-row,C#,Winforms,Datagridview,Delete Row,我想从DataGridView以及数据库中删除所选行。我的代码只适用于第一行,对于其他每一行,它都会给出异常“索引超出范围” 也许你可以试试sqldatasource。例如: <asp:SqlDataSource ID="sdsJur" runat="server" ConnectionString="<%$ ConnectionStrings:NilaiConnectionString %>" DeleteCommand="DE

我想从DataGridView以及数据库中删除所选行。我的代码只适用于第一行,对于其他每一行,它都会给出异常“索引超出范围”


也许你可以试试sqldatasource。例如:

<asp:SqlDataSource ID="sdsJur" runat="server" 
           ConnectionString="<%$ ConnectionStrings:NilaiConnectionString %>" 
           DeleteCommand="DELETE FROM [Jurusan] WHERE [Kd_Jurusan] = @Kd_Jurusan" 
           InsertCommand="INSERT INTO [Jurusan] ([Jurusan]) VALUES (@Jurusan)" 
           SelectCommand="SELECT * FROM [Jurusan]" 
           UpdateCommand="UPDATE [Jurusan] SET [Jurusan] = @Jurusan WHERE [Kd_Jurusan] = @Kd_Jurusan">
           <DeleteParameters>
               <asp:Parameter Name="Kd_Jurusan" Type="Int32" />
           </DeleteParameters>
           <InsertParameters>
               <asp:FormParameter FormField="tbJurusan" Name="Jurusan" />
           </InsertParameters>
           <UpdateParameters>
               <asp:Parameter Name="Jurusan" Type="String" />
               <asp:Parameter Name="Kd_Jurusan" Type="Int32" />
           </UpdateParameters>
</asp:SqlDataSource>`
<asp:GridView ID="gvJurusan" runat="server" AllowPaging="True" 
     AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="Kd_Jurusan"DataSourceID="sdsJur">
     <Columns>
         <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
         <asp:BoundField DataField="Kd_Jurusan" HeaderText="Kd_Jurusan" InsertVisible="False" ReadOnly="True" SortExpression="Kd_Jurusan" />
         <asp:BoundField DataField="Jurusan" HeaderText="Jurusan" SortExpression="Jurusan" />
     </Columns>
</asp:GridView>`

`
然后你可以使用Gridview(我认为类似于datagrigview)。例如:

<asp:SqlDataSource ID="sdsJur" runat="server" 
           ConnectionString="<%$ ConnectionStrings:NilaiConnectionString %>" 
           DeleteCommand="DELETE FROM [Jurusan] WHERE [Kd_Jurusan] = @Kd_Jurusan" 
           InsertCommand="INSERT INTO [Jurusan] ([Jurusan]) VALUES (@Jurusan)" 
           SelectCommand="SELECT * FROM [Jurusan]" 
           UpdateCommand="UPDATE [Jurusan] SET [Jurusan] = @Jurusan WHERE [Kd_Jurusan] = @Kd_Jurusan">
           <DeleteParameters>
               <asp:Parameter Name="Kd_Jurusan" Type="Int32" />
           </DeleteParameters>
           <InsertParameters>
               <asp:FormParameter FormField="tbJurusan" Name="Jurusan" />
           </InsertParameters>
           <UpdateParameters>
               <asp:Parameter Name="Jurusan" Type="String" />
               <asp:Parameter Name="Kd_Jurusan" Type="Int32" />
           </UpdateParameters>
</asp:SqlDataSource>`
<asp:GridView ID="gvJurusan" runat="server" AllowPaging="True" 
     AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="Kd_Jurusan"DataSourceID="sdsJur">
     <Columns>
         <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
         <asp:BoundField DataField="Kd_Jurusan" HeaderText="Kd_Jurusan" InsertVisible="False" ReadOnly="True" SortExpression="Kd_Jurusan" />
         <asp:BoundField DataField="Jurusan" HeaderText="Jurusan" SortExpression="Jurusan" />
     </Columns>
</asp:GridView>`

`

希望它有用

看起来您在获取DataGridRow的值之前删除了它

dgPartyDetails.Rows.RemoveAt(selectedrowindex);
itemId = Convert.ToString(selectedRow.Cells[0].Value);
颠倒这些陈述的顺序可以解决你的问题

itemId = Convert.ToString(selectedRow.Cells[0].Value);
dgPartyDetails.Rows.RemoveAt(selectedrowindex);

共享aspx代码,您在哪种情况下编写上述代码?它适用于Windows窗体,而不是aspx。我已经在按钮点击事件上写下了您收到的异常情况是什么?如果有…请尝试
dgPartyDetails.CurrentCell.RowIndex它不适用于asp.net。我是在windows窗体中使用C#实现的!它是“DataGridView”,而不是“GridView”。无论如何,谢谢你!:)