asp.net - net - Acceso a datos de fila en Telerik RadGrid(lado del servidor)
telerik demo (7)
Es posible que desee ver la propiedad DataKeyValues 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 tengo que pasar cierta información sobre la fila dada en la consulta cuerda.
Si esto resulta ser lo que necesita, también deberá definir qué campos estarán disponibles a través de esta propiedad. Para hacerlo, consulte la propiedad MasterTableView.DataKeyNames en la hoja de propiedades de la cuadrícula. Básicamente, especifica una lista de nombres de campo delimitada por comas.
No tengo problemas para usar Javascript para leer las filas de un componente de telerik radgrid usando, sin embargo, parece que puedo encontrar de todos modos para acceder al servidor de datos de fila cuando se produce una devolución de datos. He pasado años buscando soluciones, pero no tuve suerte. Cualquier puntero sería muy apreciado.
Tony
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é! : [
Utilizo la grilla de Telerik desde hace algún tiempo y encontré estos artículos en sus documentos sobre cómo recuperar datos de las filas seleccionadas del servidor o del lado del cliente:
Lado del cliente del lado del servidor
Espero que los encuentres útiles.
Polla
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 marcado o inicio de página para controles dinámicos, entonces el 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 le haya indicado a la vista de tabla en cuestión que mantenga las columnas en 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 dinámica personalizada y necesita acceder a los valores que ahora pueden estar en sus estados, puede usar:
protected string GetCustomTextBoxValue(GridDataItem item, string controlID) {
item.ThrowIfNull("item");
controlID.ThrowIfNullOrTrimmedEmpty("controlID");
return ((TextBox)item.FindControl(controlID)).Text;
}