2013-02-26 3 views
0

В моем коде мне нужно сделать некоторые textboxes[], которые будут получать некоторую информацию из базы данных, однако ее рабочей на 50%Textbox массиву 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); вызывается странным образом.

1-й раз при вводе текстового поля является пожары 2-й раз, когда он не уволил 3-й раз он стреляет 4-й раз, когда он не стрелял и так далее

Если я могу огонь.Пушка TestForm_TextChanged каждый раз проблема будет исправлена.

У меня также есть некоторые флажки, у которых есть обработчик событий checkchanged, которые показывают информацию на руке, проверены или нет, это вызывает некоторые проблемы. im работает в обновленной панели и имеет сценариста на моем aspx desinger. что вызывает эту проблему?

С Google chrome я могу использовать ENTER, и он будет работать все время. Но ввод не работает в Internet Explorer.

ПРИМЕЧАНИЕ: КОД, КОТОРЫЙ Я ОТПРАВИЛ ЗДЕСЬ, ЯВЛЯЕТСЯ РЕПЛИКОЙ НЕ РЕАЛЬНЫМ КОДОМ. ЭТО ПОЧЕМУ ПОЛИТИКА МОИ ИНТЕРНЕТ.

Если вам нужна дополнительная информация о коде, можно свободно задать вопрос, постарайтесь быть максимально подробными, как можете.

ответ

0

Я зафиксировал проблему по-видимому, проблема, что не было Id

так я добавил информацию [I] .id = "информацию" + I; , и это устранило проблему

0

Я думаю, проблема в том, что все ваши текстовые поля и метки являются статическими. Сделайте их частью вашего экземпляра Page.

+0

, если вы имеете в виду, что мне нужно очистить статический текст текстовых полей, который уже привязан мной. чем у меня возникла проблема с моими другими веб-страницами, которые больше не хотят работать вместе. потому что я использую differnt cs для всех баз данных qeury's. также ошибка нестационарной переменной со статическим методом. Нет ли метода, подобного LostFocus? –

+0

Я пробовал до этого, что информация заполняется в тексте. Пустой есть и после того, как текст не был уволен (второе изменение в текстовом поле), эти метки были изменены на Недоступно, что он скажет, если в базе данных нет результата , Но с отладкой это показывает мне, что он не стреляет с текстом –

Смежные вопросы