Pregunta

No tengo problemas al usar Javascript para leer las filas de un componente de telerik radgrid. Sin embargo, parece que de todas formas puedo encontrar acceso al lado del servidor de datos de la fila cuando ocurre una devolución. Llevo mucho tiempo buscando soluciones pero sin suerte. Cualquier puntero sería muy apreciado.

Tony

¿Fue útil?

Solución

Es posible que desee consultar DataKeyValues propiedad del objeto OwnerTableView, que le permitirá acceder a una colección de valores que representan los campos en una fila determinada. Lo uso durante el controlador de eventos EditCommand, ya que un usuario de mi sitio se dirige a una página de edición si hace clic en el enlace para editar una fila en la cuadrícula, y debo pasar cierta información sobre la fila dada en la consulta cadena.

Si esto resulta ser lo que necesita, también deberá definir qué campos deben estar disponibles a través de esta propiedad. Para hacer eso, mira la propiedad MasterTableView.DataKeyNames en la hoja de propiedades para la cuadrícula. Básicamente, usted especifica una lista de nombres de campo delimitada por comas.

Otros consejos

Utilizo la cuadrícula de Telerik por algún tiempo y encontré estos artículos en sus documentos sobre cómo obtener datos del servidor de filas seleccionadas o del lado del cliente:

Lado del servidor Lado del cliente

Espero que los encuentres útiles.

Dick

El lado del servidor es la parte fácil:

GridItemCollection gridRows = TestGrid.Items;
foreach (GridDataItem data in gridRows)
{
    ItemClass obj = (ItemClass)data.DataItem;
}

Es la parte del lado del cliente que no sé! : [

private Int32 GetID()
{
    foreach (Telerik.Web.UI.GridDataItem dataItem in radGrid.MasterTableView.Items)
    {
        if (dataItem.Selected == true)
        {
            Int32 ID = (Int32)dataItem.GetDataKeyValue("ID");
            return ID;
        }
    }
    throw new ArgumentNullException("Id Not found");
}
private Int32 GetID()
{
    foreach (Telerik.Web.UI.GridDataItem dataItem in radGrid.MasterTableView.Items)
    {
        if (dataItem.Selected == true)
        {
           // Int32 ID = (Int32)dataItem.GetDataKeyValue("ID");
Int32 ID =Convert.ToInt32(dataItem.GetDataKeyValue("ID"));
            return ID;
        }
    }

}
//this will work

Este es el que funciona para mí y usa la colección RadGrid.SelectedItems.

protected void LinkButton1_Click(object sender, EventArgs e)
    {
        List<Guid> OrderIdList = new List<Guid>();

        foreach (GridDataItem OrderItem in this.RadGrid1.SelectedItems)
        {
            OrderIdList.Add(new Guid(OrderItem.GetDataKeyValue("OrderId").ToString()));
        }
    }

Si creó correctamente sus controles en el marcado o el inicio de página para los controles dinámicos, RadGrid restaurará el estado correctamente.

Puede acceder a los valores iniciales que se cargaron desde la fuente de datos como en este ejemplo a continuación, siempre que haya indicado la vista de tabla en cuestión para mantener las columnas alrededor de las claves de datos.

protected T GetInitialGridData<T>(GridDataItem item, string uniqueColumnName) {
   item.ThrowIfNull("item");
   uniqueColumnName.ThrowIfNullOrEmpty("uniqueColumnName");

   return (T)item.OwnerTableView.DataKeyValues(gridItem.ItemIndex)(columnName);
}

Si está utilizando una columna de plantilla personalizada dinámica, y necesita llegar a cualquier valor que pueda estar ahora en su estado, puede usar:

protected string GetCustomTextBoxValue(GridDataItem item, string controlID) {
   item.ThrowIfNull("item");
   controlID.ThrowIfNullOrTrimmedEmpty("controlID");

   return ((TextBox)item.FindControl(controlID)).Text;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top