Pregunta

Tengo un sencillo UserControl que he creado que simplemente permite que un usuario ingrese la fecha. Por el momento, tiene un solo cuadro de texto con id = "tbdate". Estoy tratando de agregar dinámicamente este control varias veces a través de (por ejemplo) placeholder.Controls.Add(LoadControl()) Pero estoy recibiendo el error "una entrada con la misma clave ya existe". Podría, tal vez, cambiar la identificación de los elementos, pero sería difícil obtener el valor ingresado por el usuario.
¿Alguien tiene una idea sobre esto?

¡Gracias!

¿Fue útil?

Solución

Generaron un identificador único como parte de una clase de componentes que creé y luego uso ese valor como control.id. Puede generar este valor único de cualquier manera que desee, pero lo estoy almacenando como parte de una tabla de base de datos. Al final, no es tan importante ya que cuando la clase se instancia los valores se inicializan y se consisten en la ejecución de la aplicación.

La clase tiene una variable de instancia privada:

private Control _control;

Al agregar el control al formulario (y, específicamente, al marcador de posición), hago algo similar a esto. Tenga en cuenta que c Referencias mi clase creada.

c.Control.ID = c.ComponentName + c.UniqueIdentifier;
phHere.Controls.Add(c.Control);

Luego, cuando necesito hacer referencia al control en un punto posterior, esencialmente invierto los pasos anteriores:

string component = c.ComponentName + c.UniqueIdentifier;
UserControl uc = (UserControl)ph.FindControl(component);

Ojalá esto ayude. Si tiene alguna pregunta, no dude en preguntar. Sin embargo, la raíz del problema es que el control.id debe establecerse para evitar el error.

Gracias

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top