Было найдено несколько элементов управления с одинаковым идентификатором ''.FindControl требует, чтобы элементы управления имели уникальные идентификаторы - PullRequest
0 голосов
/ 25 января 2011

обновление:

вот что я заметил:

if i get    org.Registrations.Count = 1 then 
    txtBox.ID   "_registration0_0"  string
....
....

если я получу org.Registrations.Count = 2, тогда его поступок странный

txtBox.ID   "_registration2_0"  
txtBox.ID   "_registration2_1"


after that i starts again with _registration2_0

ps: у меня нет проблем, если count = 1

конец обновления

в сообщениях об ошибках ясно сказано, что я пытаюсь получить дубликат идентификатора, нониже, где я создаю динамическое текстовое поле, вы видите, что не так в моем коде?

protected void gv_RowCreated(object sender, GridViewRowEventArgs e)
{
   Students org = (namespace.Students )(e.Row.DataItem);

   foreach (Registration reg in org.Registrations)
   {
      int _count = org.Registrations.Count;
      for (int rowId = 0; rowId < _count; rowId++)
      {
         TextBox txtBox = new TextBox();
         txtBox.ID = "_registration" + e.Row.RowIndex + "_" + rowId;
         txtBox.Text = reg.Name;
         e.Row.Cells[7].Controls.Add(txtBox);
     }
   }
}

Ответы [ 2 ]

0 голосов
/ 25 января 2011

Мне не нужен цикл for внутри foreach .. он работает как положено ... вот почему он выполнялся дважды.

foreach (Registration reg in org.Registrations) 
{
   //
}
0 голосов
/ 25 января 2011

Похоже, что если у вас несколько орг.регистраций, вы можете получить дубликаты идентификаторов. Посмотрите на использование тестовой переменной ниже:

protected void gv_RowCreated(object sender, GridViewRowEventArgs e)
{
   Students org = (namespace.Students )(e.Row.DataItem);
   int test =0;
   foreach (Registration reg in org.Registrations)
   {
      test++;
      int _count = org.Registrations.Count;
      for (int rowId = 0; rowId < _count; rowId++)
      {
         TextBox txtBox = new TextBox();
         txtBox.ID = "_registration" + e.Row.RowIndex + "_" + rowId + "_" + test.ToString();
         txtBox.Text = reg.Name;
         e.Row.Cells[7].Controls.Add(txtBox);
     }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...