I have a grid, I want to delete a row.
The relevant code is something like
private void dGridErrorLog_DeleteCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
// delete the row
nxCmdDeleteErrorLogItem.Parameters["@LogID"].Value =
dGridErrorLog.DataKeys[e.Item.ItemIndex];
nxConnection.Open();
nxCmdDeleteErrorLogItem.ExecuteNonQuery();
nxConnection.Close();
// rebind the grid:
nxConnection.Open();
nxDataAdapterErrorLog.Fill(nxDataAdapterErrorLog_D ataSet, "errorlog");
dGridErrorLog.DataSource = nxDataAdapterErrorLog_DataSet;
dGridErrorLog.DataMember = "errorlog";
dGridErrorLog.DataBind();
nxConnection.Close();
}
The grid has four rows, which I can see return values for e.Item.ItemIndex
of 0, 1, 2, 3 depending on which row I click on. But calculating
dGridErrorLog.DataKeys[e.Item.ItemIndex];
gives me errors like
<<
Index was out of range. Must be non-negative and less than the size of the
collection. Parameter name: index
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.
Exception Details: System.ArgumentOutOfRangeException: Index was out of
range. Must be non-negative and less than the size of the collection.
Parameter name: index
Source Error:
Line 347: private void dGridErrorLog_DeleteCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
Line 348: {
Line 349: lblTest.Text =
dGridErrorLog.DataKeys[e.Item.ItemIndex].ToString();
Source File:
e:\inetpub\wwwroot\Mywebinterface_nexusdb\admin\vi ewerrorlog.aspx.cs
Line: 349
Stack Trace:
[ArgumentOutOfRangeException: Index was out of range. Must be non-negative
and less than the size of the collection.
Parameter name: index]
System.Collections.ArrayList.get_Item(Int32 index) +91
System.Web.UI.WebControls.DataKeyCollection.get_It em(Int32 index) +10
MyWebInterface_NexusDB.Admin.ViewErrorLog.dGridErr orLog_DeleteCommand(Object
source, DataGridCommandEventArgs e) in
e:\inetpub\wwwroot\Mywebinterface_nexusdb\admin\vi ewerrorlog.aspx.cs:349
System.Web.UI.WebControls.DataGrid.OnDeleteCommand (DataGridCommandEventArgs
e) +110
System.Web.UI.WebControls.DataGrid.OnBubbleEvent(O bject source, EventArgs
e) +589
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +26
System.Web.UI.WebControls.DataGridItem.OnBubbleEve nt(Object source,
EventArgs e) +106
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +26
System.Web.UI.WebControls.LinkButton.OnCommand(Com mandEventArgs e) +121
System.Web.UI.WebControls.LinkButton.System.Web.UI .IPostBackEventHandler.Rai
sePostBackEvent(String eventArgument) +115
System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler
sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData) +138
System.Web.UI.Page.ProcessRequestMain() +1277
Any suggestions?
Thanks!
Lauchlan M