我想从DataGridView以及数据库中删除所选行。我的代码仅适用于第一行,对于每个其他行,它提供异常"索引超出范围"。
SqlConnection con = new SqlConnection(conString);
SqlCommand cmd = new SqlCommand();
string itemId;
if (dgPartyDetails.SelectedCells.Count > 0)
{
int selectedrowindex = dgPartyDetails.SelectedCells[0].RowIndex;
try
{
DataGridViewRow selectedRow = dgPartyDetails.SelectedRows[selectedrowindex];
if (selectedRow.Selected == true)
{
dgPartyDetails.Rows.RemoveAt(selectedrowindex);
itemId = Convert.ToString(selectedRow.Cells[0].Value);
con.Open();
cmd.CommandText = "DELETE FROM tblParty WHERE Id=" + itemId + "";
cmd.Connection = con;
int count = cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
答案 0 :(得分:1)
在获取DataGridRow值之前,您似乎已删除它。
dgPartyDetails.Rows.RemoveAt(selectedrowindex);
itemId = Convert.ToString(selectedRow.Cells[0].Value);
撤销这些陈述的顺序可以解决您的问题。
itemId = Convert.ToString(selectedRow.Cells[0].Value);
dgPartyDetails.Rows.RemoveAt(selectedrowindex);
答案 1 :(得分:0)
也许你可以试试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>`
然后你可以使用Gridview(我认为类似于datagrigview)。例如:
<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>`
希望它有用