Domanda

Non ho avuto problemi ad usare Javascript per leggere le righe di un componente di Raderi Telerik che sto usando, tuttavia mi sembra di trovare comunque un accesso al lato server dei dati di riga quando si verifica un postback. Ho passato anni cercando soluzioni ma senza fortuna. Qualsiasi suggerimento sarebbe molto apprezzato.

Tony

È stato utile?

Soluzione

Potresti voler guardare DataKeyValues dell'oggetto OwnerTableView, che ti consentirà di accedere a una raccolta di valori che rappresentano i campi in una determinata riga. Lo uso durante il gestore di eventi EditCommand, poiché un utente del mio sito viene indirizzato a una pagina di modifica se fa clic sul collegamento per modificare una riga nella griglia e devo passare alcune informazioni sulla riga specificata nella query stringa.

Se questo risulta essere ciò di cui hai bisogno, dovrai anche definire quali campi devono essere resi disponibili tramite questa proprietà. Per fare ciò, guarda la proprietà MasterTableView.DataKeyNames nella finestra delle proprietà per la griglia. In pratica si specifica un elenco di nomi di campi delimitati da virgole.

Altri suggerimenti

Uso la griglia di Telerik da qualche tempo e ho trovato questi articoli nei loro documenti su come recuperare i dati dal server di righe selezionato o dal lato client:

Lato server Lato client

Spero che li troverai utili.

Dick

Il lato server è la parte facile:

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

È la parte lato client che non conosco! : [

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

Questo è quello che funziona per me e utilizza la raccolta 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()));
        }
    }

Se hai creato correttamente i tuoi controlli in markup o page init per controlli dinamici, RadGrid ripristinerà correttamente lo stato.

Puoi accedere ai valori iniziali che sono stati caricati dall'origine dati come nell'esempio seguente, a condizione che tu abbia detto alla vista tabella in questione di mantenere le colonne nelle chiavi dei dati.

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

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

Se stai utilizzando una colonna di modello personalizzato dinamico e devi raggiungere qualsiasi valore che potrebbe essere nei loro stati, puoi utilizzare:

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

   return ((TextBox)item.FindControl(controlID)).Text;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top