Share via


Solución de problemas del control DataRepeater (Visual Studio)

En este tema se enumeran los problemas comunes que pueden producirse al trabajar con el control DataRepeater.

No se provocan eventos de teclado y mouse de DataRepeater

No se provocan algunos eventos del control DataRepeater, como eventos de teclado y mouse. Esto es intencionado. El propio control DataRepeater es un contenedor para objetos DataRepeaterItem y no se puede obtener acceso a él en tiempo de ejecución. El objeto DataRepeaterItem no expone eventos en tiempo de diseño. Por consiguiente, al hacer clic en un elemento o al presionar una tecla cuando el elemento tiene el foco no se inicia ningún evento.

La excepción a esto es cuando la propiedad Padding está establecida en un valor lo suficientemente grande para exponer los bordes del control DataRepeater. En este caso, al hacer clic en el margen expuesto, se provocarán eventos de mouse.

Para resolver este problema, agregue un control Panel a la sección ItemTemplate del control DataRepeater y, a continuación, agregue el resto de los controles a Panel. A continuación, puede agregar código a los controladores de eventos del control Panel para eventos de teclado y mouse.

DataRepeater se oculta parcialmente detrás del examinador de enlaces

Al agregar por primera vez un control DataRepeater a un formulario y, a continuación, agregar controles enlazados a datos desde la ventana Orígenes de datos, el control BindingNavigator puede aparecer encima del control DataRepeater. Es una limitación conocida de la ventana Orígenes de datos, en la que otros controles, como el control DataGridView, se comportan de igual manera.

Puede colocar el control DataRepeater debajo del control BindingNavigator en tiempo de diseño o agregar un código similar al siguiente en el controlador de eventos Load.

DataRepeater1.Top = ProductsBindingNavigator.Height
dataRepeater1.Top = productsBindingNavigator.Height;

Los controles no se muestran correctamente en tiempo de ejecución

Algunos controles en un control DataRepeater no se pueden mostrar en tiempo de ejecución tal como se espera. El proceso utilizado para clonar controles de ItemTemplate en DataRepeaterItem no siempre puede determinar todas las propiedades de todos los controles. Por ejemplo, si agrega un control ListBox independiente a un control DataRepeater en tiempo de diseño y rellena su colección Items con una lista de cadenas, el control ListBox estará vacío en tiempo de ejecución. Esto es así porque el proceso de clonación no puede tener en cuenta la propiedad Items.

Puede corregir este tipo de problemas restableciendo las propiedades perdidas en el evento ItemCloned, lo que sucede una vez completada la clonación predeterminada. En el ejemplo siguiente se muestra cómo reparar la colección Items de un control ListBox en el controlador de eventos ItemCloned.

Private Sub DataRepeater1_ItemCloned(
    ByVal sender As Object, 
    ByVal e As Microsoft.VisualBasic.PowerPacks.DataRepeaterItemEventArgs
  ) Handles DataRepeater1.ItemCloned

    Dim Source As ListBox = 
        CType(DataRepeater1.ItemTemplate.Controls.Item("ListBox1"), ListBox)
    Dim ListBox1 As ListBox = 
        CType(e.DataRepeaterItem.Controls.Item("ListBox1"), ListBox)
    For Each s As String In Source.Items
        ListBox1.Items.Add(s)
    Next 
End Sub
private void dataRepeater1_ItemCloned(object sender, 
    Microsoft.VisualBasic.PowerPacks.DataRepeaterItemEventArgs e)
{
    ListBox Source = (ListBox)dataRepeater1.ItemTemplate.Controls["listBox1"];
    ListBox listBox1 = (ListBox)e.DataRepeaterItem.Controls["listBox1"];
    foreach (string s in Source.Items)
    {
        listBox1.Items.Add(s);
    }
}

Falta el símbolo de selección en el encabezado del elemento

Al cambiar la propiedad SelectionColor del encabezado de elemento en un control DataRepeater, algunas opciones de color pueden hacer que el símbolo de selección desaparezca. Al modificar la propiedad ItemHeaderSize, el símbolo de selección también puede desaparecer.

No se pueden cambiar ni color ni el tamaño del símbolo de selección.

  • Si establece la propiedad SelectionColor en White, el símbolo de selección no estará visible al seleccionar por primera vez un elemento.

  • Si establece la propiedad SelectionColor en Black, el símbolo de selección no estará visible cuando esté seleccionado un control y el símbolo de lápiz no estará visible cuando un control esté en modo de edición.

  • Si la propiedad ItemHeaderSize está establecida en un valor menor que 11, no se mostrarán los símbolos de indicador en el encabezado del elemento.

Puede proporcionar su propio encabezado de elemento y símbolo de selección utilizando un control PictureBox y supervisando la propiedad IsCurrent de DataRepeaterItem en el evento DrawItem del control DataRepeater. Para obtener más información, vea IsCurrent.

Vea también

Tareas

Cómo: Mostrar los datos enlazados en un control DataRepeater (Visual Studio)

Cómo: Mostrar controles no enlazados en un control DataRepeater (Visual Studio)

Cómo: Cambiar el diseño de un control DataRepeater (Visual Studio)

Cómo: Cambiar la apariencia de un control DataRepeater (Visual Studio)

Cómo: Mostrar los encabezados de los elementos en un control DataRepeater (Visual Studio)

Cómo: Deshabilitar las operaciones de agregar y eliminar elementos DataRepeater (Visual Studio)

Cómo: Buscar datos en un control DataRepeater (Visual Studio)

Cómo: Crear un formulario principal-detalle mediante dos controles DataRepeater (Visual Studio)

Conceptos

Introducción al control DataRepeater (Visual Studio)