C# 返回0的数据表。ASP.NET位置2没有行
我试图使用复选框从gridview中删除一行或多行;但是,当我选中该框时,它会显示以下错误消息:位置2没有行。在将这一行添加到debug dt.rows.count>0时,我发现count为0。gridview中显示的数据是从数据库表中提取的C# 返回0的数据表。ASP.NET位置2没有行,c#,asp.net,C#,Asp.net,我试图使用复选框从gridview中删除一行或多行;但是,当我选中该框时,它会显示以下错误消息:位置2没有行。在将这一行添加到debug dt.rows.count>0时,我发现count为0。gridview中显示的数据是从数据库表中提取的 for(int i = GridView2.Rows.Count - 1; i >= 0; i--) { var row = GridView2.Rows[i]; CheckBox chk = row.FindControl("c
for(int i = GridView2.Rows.Count - 1; i >= 0; i--)
{
var row = GridView2.Rows[i];
CheckBox chk = row.FindControl("chkInvoice") as CheckBox;
if (chk != null && chk.Checked)
{
dt.Rows.RemoveAt(i);
}
}
GridView2.DataSource = dt;
GridView2.DataBind();
要使上述代码正常工作,“dt”必须具有与GridView2相同的行的副本。但是,您可以从gridView的缓冲区中删除行,而不是从单独的表中删除行。使用
GridView2.Rows.RemoveAt(i)代码>
您的循环是向后运行的,所以删除行应该不会有问题,因为如果您是从第一个运行到最后一个。现在,如果您需要跟踪要删除的行,以便发出数据库删除命令,这是另一个问题
Update:RemoveAt是一个针对行的方法,该行是dataGridViewRowCollection。请参阅:如何初始化dt
?dt=new DataTable();在页面加载中,默认情况下,新数据表不会有任何行。这就是为什么你会看到行。零计数我相信@ChetanRanpariya想问的是你是如何以及在哪里填充“dt”的?你能发布你的页面加载事件函数吗?我删除了那一行,但当它们是3行时,它只显示1