【发布时间】:2015-11-17 21:50:15
【问题描述】:
我有一个简单的 GridView 绑定到我的数据库中的一个表。 在我尝试删除或更新一行之前,一切看起来都很好。 我得到一个 System.ArgumentOutOfRangeException 因为“索引超出范围。必须是非负数并且小于集合的大小。” 在分析了我的调试输出后,我意识到我的 GridView 在我的 rowDeleting 和 rowUpdating 方法中有 0 行。这是其中一种方法的代码:
protected void gvTermene_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
System.Diagnostics.Debug.WriteLine(e.RowIndex); //result is 3, for example
System.Diagnostics.Debug.WriteLine(gvTermene.Rows.Count.ToString()); //result is always 0
GridViewRow gvRow = (GridViewRow)gvTermene.Rows[e.RowIndex];
HiddenField hfID = (HiddenField)gvRow.FindControl("IDDoc");
var connectionFromConfiguration = WebConfigurationManager.ConnectionStrings["MsSql Connection"];
using (SqlConnection dbConnection = new SqlConnection(connectionFromConfiguration.ConnectionString))
{
try
{
dbConnection.Open();
string sql = string.Format("DELETE FROM TermenDocumente WHERE IDDocument={0}", hfID.Value);
SqlCommand command = new SqlCommand(sql, dbConnection);
command.ExecuteNonQuery();
gvTermene.EditIndex = -1;
bindDataToGridView();
}
catch (Exception exc)
{
ltError.Text = exc.Message;
}
finally
{
dbConnection.Dispose();
}
}
}
可能是什么问题?
提前感谢您!
【问题讨论】:
-
你能找到
DataSource.Deleting而不是GridView.RowDeleting吗?
标签: c# asp.net gridview webforms count