源代码:
for (int i=1; i < =AuthorData.Authors .Columns.Count; i++) 
{
TextBox t = (TextBox)(e.Item.Cells[i].Controls[0]);
DataRow row = AuthorData.Authors[e.Item.DataSetIndex];
row[AuthorData.Authors.Columns[i-1].Caption] = t.Text;
}
出错提示
“/AuthorsWebClient”应用程序中的服务器错误。
--------------------------------------------------------------------------------指定的参数已超出有效值的范围。参数名: index 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。参数名: index源错误: 
行 83:  for (int i=1; i <= AuthorData.Authors .Columns.Count; i++) 
行 84:  {
行 85:  TextBox t = (TextBox)(e.Item.Cells[i].Controls[0]);
行 86:  DataRow row = AuthorData.Authors[e.Item.DataSetIndex];
行 87:  row[AuthorData.Authors.Columns[i-1].Caption] = t.Text;
 源文件: c:\inetpub\wwwroot\authorswebclient\webform1.aspx.cs    行: 85 

解决方案 »

  1.   

    改成TextBox t = (TextBox)(e.Item.Cells[i - 1].Controls[0]);试试
    如果不行,首先调试一下看看e.Item.Cells[i - 1]是否为null,如果为null,则数据列有问题,如果不为null,则说明e.Item.Cells[i - 1]中不存在文本框。总之一步一步调试看看有什么问题。
      

  2.   

    修改后错误如下:
    “/AuthorsWebClient”应用程序中的服务器错误。
    --------------------------------------------------------------------------------指定的转换无效。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidCastException: 指定的转换无效。源错误: 
    行 83:  for (int i=1; i <= AuthorData.Authors .Columns.Count; i++) 
    行 84:  {
    行 85:  TextBox t = (TextBox)(e.Item.Cells[i-1].Controls[0]);
    行 86:  DataRow row = AuthorData.Authors[e.Item.DataSetIndex];
    行 87:  row[AuthorData.Authors.Columns[i-1].Caption] = t.Text;
     源文件: c:\inetpub\wwwroot\authorswebclient\webform1.aspx.cs    行: 85 
      

  3.   

    (int i=1; i < =AuthorData.Authors .Columns.Count; i++) 
    把这里的等号去掉就可以了,Columns.Count比可用下标大1,你可以从循环0开始