<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
<%@ Import namespace="System"%>
<script language="c#" runat="server">public void page_load(object sender,EventArgs e)
{
           
   if(!IsPostBack)
   {
  showtable();
  
   }
  
  
}
private void bt_Click(object sender,EventArgs e)
                {

lb.Text = ((TextBox)tbl.Rows[1].Cells[1].Controls[0]).Text;
                
 }
private void showtable()
                 {
                      for(int i=0;i<10;i++)
                          {
                              TableRow r = new TableRow();
                              for(int j=0;j<10;j++)
                                 {
                                         TableCell c = new TableCell();
                                         c.Controls.Add(new LiteralControl("("+i.ToString()+","+j.ToString()+")"));
                                         r.Cells.Add(c);
                                         TextBox tb = new TextBox();
                                         c.Controls.AddAt(0,tb);
                                         tb.BorderStyle = BorderStyle.Groove;
                                         
                                  }
                              tbl.Rows.Add(r);
                            }
                    }</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<form runat="server"><div align="center">
<asp:Table runat="server" id=tbl></asp:Table><br />
<asp:Button runat="server" id=bu OnClick="bt_Click" Text="OK"></asp:Button><br><br>
<asp:Label runat="server" ID="lb"></asp:Label></div>
</form>
</body>
</html>
为啥我执行后会出现这样的错误提示:
指定的参数已超出有效值的范围。参数名: index 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

解决方案 »

  1.   

    主要是   if(!IsPostBack){ showtable(); }問題,tbl只在第一次加載頁面的時候被動態創建,但是當你button時,又一次載入頁面,而這次沒有執行showtable(); ,故tbl.Rows.Count=0.你可以把
    // if(!IsPostBack)
    // {
    showtable();
      
    // }
    試一下,就明白了
    lb.Text = tbl.Rows.Count.ToString();
    lb.Text += ((TextBox)tbl.Rows[1].Cells[1].Controls[0]).Text;