2013-02-26 30 views
0

在我的代码,我需要做一些textboxes[],将获得从数据库但其工作的50%文本框阵列框TextChanged不火正确

public static Table tableinfo = new Table(); 
    public static TableRow rowinfo = new TableRow(); 
    public static TextBox[] information = new TextBox[1000]; 
    public static Label[] information1 = new Label[1000]; 
    public static Label[] information2 = new Label[1000]; 
    public static Label[] information3 = new Label[1000]; 
    public static Label[] information4 = new Label[1000]; 
    public static string[] gettext = new string[1000]; 
    public static int textboxes; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      textboxes = 1; 
      for (int i = 0; i < 1000; i++) 
      { 
       Array.Clear(gettext, 0, gettext.Length); 
       Array.Clear(information, 0, information.Length); 
      } 
     } 
     else 
     { 

     } 
     tableinfo.Controls.Clear(); 
     tableinfo.BorderWidth = 1; 
     addtextboxes(); 
     placeholder1.Controls.Add(tableinfo); 
     makeandfilltextboxes(); 
    } 

    public static void makeandfilltextboxes() 
    { 
     for (int i = 0; i < textboxes; i++) 
     { 
      gettext[i] = ""; 
     } 
     for (int i = 0; i < textboxes; i++) 
     { 
      gettext[i] = information[i].Text; 
      //go to database and fetch information 
      information1[i].text = databaseinformation1[i]; 
      information2[i].text = databaseinformation2[i]; 
      information3[i].text = databaseinformation3[i]; 
      information4[i].text = databaseinformation4[i]; 
     } 
    } 

    static void TestForm_TextChanged(object sender, EventArgs e) 
    { 
     makeandfilltextboxes(); 
     tableinfo.Controls.Clear(); 
     tableinfo.BorderWidth = 1; 
     textboxes++; 
     addtextboxes(); 
    } 
    public static void addtextboxes() 
    { 
     for (int i = 0; i < textboxes; i++) 
     { 
      rowinfo = new TableRow(); 
      TableCell cellinfo = new TableCell(); 
      information[i] = new TextBox(); 
      information[i].AutoPostBack = true; 
      information[i].CausesValidation = false; 
      information[i].EnableViewState = true; 
      information[i].Text = gettext[i]; 
      information[i].TextChanged += new EventHandler(TestForm_TextChanged); 
      rowinfo.Cells.Add(cellinfo); 
      cellinfo.Controls.Add(information[i]); 
      tableinfo.Controls.Add(rowinfo); 

      TableCell cellinfo1 = new TableCell(); 
      information1[i] = new Label(); 
      information1[i].EnableViewState = true; 
      information1[i].Text = databaseinformation1[i]; 
      rowinfo.Cells.Add(cellinfo1); 
      cellinfo.Controls.Add(information1[i]); 
      tableinfo.Controls.Add(rowinfo); 

      TableCell cellinfo2 = new TableCell(); 
      information2[i] = new Label(); 
      information2[i].EnableViewState = true; 
      information2[i].Text = databaseinformation2[i]; 
      rowinfo.Cells.Add(cellinfo2); 
      cellinfo.Controls.Add(information2[i]); 
      tableinfo.Controls.Add(rowinfo); 

      TableCell cellinfo3 = new TableCell(); 
      information3[i] = new Label(); 
      information3[i].EnableViewState = true; 
      information3[i].Text = datbaseinformation3[i]; 
      rowinfo.Cells.Add(cellinfo3); 
      cellinfo.Controls.Add(information3[i]); 
      tableinfo.Controls.Add(rowinfo); 

      TableCell cellinfo4 = new TableCell(); 
      information4[i] = new Label(); 
      information4[i].EnableViewState = true; 
      information4[i].Text = databaseinformation4[i]; 
      rowinfo.Cells.Add(cellinfo4); 
      cellinfo.Controls.Add(information4[i]); 
      tableinfo.Controls.Add(rowinfo); 
     } 
    } 

因此,大家可以看到,我的一些信息填充数组中的值填入信息[i] 上的值在那里我正在查找数据库中,如果我能找到的东西。 这是完美的工作。 唯一的问题是information[i].TextChanged += new EventHandler(TestForm_TextChanged);以奇怪的方式被调用。

你进入一个文本框的第一时间是火灾 的第二次它不发射 它激发 它不发射 等

如果我能发射第四次第三次TestForm_TextChanged每次问题都会得到解决。

我也有一些复选框谁正在checkedchangeded事件处理程序checkedchanged谁显示手上的信息是否被检查是否造成一些问题 即时通讯工作在updatepanel和有一个scriptmanager在我的aspx desinger。 是什么导致这个问题?

使用谷歌浏览器,我可以使用ENTER键,它会一直工作。 但是,输入在Internet Explorer中不起作用。

注意:我发送的代码只是重复而非实际代码。 这需要我的实习政策。

如果您需要更多关于代码的信息,请随时提问,尽量尽可能详细。

回答

0

予固定的问题显然的问题是,没有一个标识

所以我说信息[I] .ID = “信息” + I; ,并解决了这个问题

0

我认为问题是所有的文本框和标签都是静态的。使它们成为Page实例的一部分。

+0

如果你的意思是,我需要清除文本框的公共静态,这已经与我并列。比我遇到了不想再一起工作的其他网页的问题。因为我对所有数据库qeury使用不同的cs。也是静态方法的非静态变量的错误。 有没有像LostFocus的方法? – 2013-02-26 20:01:37

+0

我在之前尝试过的信息填充文本Empty是存在的,并且在textchanged没有被触发后(第二次改变文本框)标签被更改为不可用如果数据库中没有结果,他会说什么。 但随着调试它显示我它并没有触发textchanged – 2013-02-26 20:07:31