C# e、 Row.RowIndex引发参数超出范围异常
这对我来说没有意义:如果我运行以下代码:C# e、 Row.RowIndex引发参数超出范围异常,c#,asp.net,gridview,sqldatasource,C#,Asp.net,Gridview,Sqldatasource,这对我来说没有意义:如果我运行以下代码: protected void viewStoryTime_OnRowDataBound(Object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { var obj = ((DataRowView)e.Row.DataItem)["ActivityDate"]; if (DateTime
protected void viewStoryTime_OnRowDataBound(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var obj = ((DataRowView)e.Row.DataItem)["ActivityDate"];
if (DateTime.Parse(obj.ToString()) < DateTime.Now.StartOfWeek(DayOfWeek.Monday))
{
System.Diagnostics.Debug.WriteLine(e.Row.RowIndex);
}
}
}
现在,如果我尝试使用此选项清除单元格:
protected void viewStoryTime_OnRowDataBound(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var obj = ((DataRowView)e.Row.DataItem)["ActivityDate"];
if (DateTime.Parse(obj.ToString()) < DateTime.Now.StartOfWeek(DayOfWeek.Monday))
{
viewStoryTime.Rows[e.Row.RowIndex].Cells[3].Controls.Clear();
}
}
}
但是,如果我输入3,它将从列中删除控件,该控件应位于该列之前:
为什么我会遇到此异常以及我能做些什么?根据您所做的一切尝试,获得此异常的唯一方法是
e.Row.RowIndex
超出范围:
viewStoryTime.Rows[e.Row.RowIndex]...
然而,我不清楚你为什么不这么做:
e.Row.Cells[3].Controls.Clear();
根据页面在事件生命周期中的位置,访问
viewStoryTime
上的行时可能会遇到问题。根据您所尝试的一切,获得此异常的唯一方法是e.Row.RowIndex
超出范围:
viewStoryTime.Rows[e.Row.RowIndex]...
然而,我不清楚你为什么不这么做:
e.Row.Cells[3].Controls.Clear();
根据页面在事件生命周期中的位置,访问
viewStoryTime
上的行时可能会出现问题。如果这样做会发生什么e.Row.Cells[3]。Controls.Clear()代码>这是一个参数异常,而不是索引超出范围异常。viewStoryTime.Rows[e.Row.RowIndex].Cells[3]
和viewStoryTime.Rows[e.Row.RowIndex].Cells[3]的值是多少。控件
?你能提供堆栈跟踪吗?另外,我看不出你在哪里“手动输入4”。你确定你的行中至少有4个单元格吗?(否则,单元格[3]将生成ArgumentOutOfRangeException)如果这样做会发生什么e.Row.Cells[3]。Controls.Clear()代码>这是一个参数异常,而不是索引超出范围异常。viewStoryTime.Rows[e.Row.RowIndex].Cells[3]
和viewStoryTime.Rows[e.Row.RowIndex].Cells[3]的值是多少。控件
?你能提供堆栈跟踪吗?另外,我看不出你在哪里“手动输入4”。你确定你的行中至少有4个单元格吗?(否则,单元格[3]将生成ArgumentOutOfRangeException)