2013-04-16 4 views
1

J'ai un problème avec Telerik RadGrid:valeurs Obtenir des colonnes en lecture seule lorsque RadGrid est en mode édition (inPlace)

  • i ont un RadGrid avec 17 colonnes, seulement 6 sont éditables (d'autres ont ReadOnly = » true ")

  • un bouton déclenche la méthode qui tente d'enregistrer les modifications dans DB (et non un événement RadGrid et donc je pas des arguments de la grille)

  • je peux obtenir des valeurs de radgrid.edititems (6 colonnes) mais je ne sais pas où trouver d'autres 11 c olumns qui ne sont pas modifiables ...

voici mon code

protected void HiddenButton_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     DataTable dt = Oggetti.DT_RDO(); 

     foreach (GridEditableItem editedItem in dgRDO.EditItems) 
     { 
      Hashtable newValues = new Hashtable(); 
      //The GridTableView will fill the values from all editable columns in the hash 
      editedItem.OwnerTableView.ExtractValuesFromItem(newValues, editedItem); 

Dans NewValues ​​j'ai modifié des valeurs, où je peux obtenir d'autres valeurs ???

Répondre

3

Veuillez essayer avec l'extrait de code ci-dessous.

.ASPX

<Columns> 
    <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID"> 
    </telerik:GridBoundColumn> 
    <telerik:GridBoundColumn DataField="Name" UniqueName="Name" HeaderText="Name"> 
    </telerik:GridBoundColumn> 
    <telerik:GridEditCommandColumn> 
    </telerik:GridEditCommandColumn> 
</Columns> 

.aspx.cs

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) 
{ 
    if (e.Item is GridEditableItem && e.Item.IsInEditMode) 
    { 
     if (e.Item is GridEditFormInsertItem) 
     { 
      // insert 
     } 
     else 
     { 
      // Edit 
      // Please add below code in your page 
      GridEditableItem item = e.Item as GridEditableItem; 
      item["Name"].Controls[0].Visible = false; 
      Label l1 = new Label(); 
      l1.ID = "l1"; 
      l1.Text = (item["Name"].Controls[0] as TextBox).Text; 
      item["Name"].Controls.Add(l1); 
     } 
    } 
} 

Note: Nous ne pouvons pas obtenir la valeur de la colonne en lecture seule méthode ExtractValuesFromItem. Si nous définissons une colonne comme étant en lecture seule, elle ne sera pas rendue dans editmode. C'est pourquoi nous ne sommes pas en mesure d'accéder à ces colonnes. Après l'ajout du code ci-dessus, vous pouvez voir/récupérer la valeur de la colonne dans la méthode ExtractValuesFromItem.

Veuillez vérifier le lien ci-dessous pour plus d'informations.

http://www.telerik.com/community/forums/aspnet-ajax/grid/reading-read-only-column-in-ragdrid-update.aspx

1

J'ai résolu ce problème en supprimant l'attribut lecture seule du GridBoundColumn, et au lieu, désactiver la zone de texte modifiable dans le cas ItemDataBound du DataGrid.

ASPX

<telerik:GridBoundColumn DataField="BillingRate" HeaderText="Rate" /> 

ASPX.VB

Protected Sub grdWorkServices_ItemDataBound(sender As Object, e As GridItemEventArgs) Handles grdWorkServices.ItemDataBound 
     If TypeOf e.Item Is GridDataItem AndAlso e.Item.IsInEditMode Then 
      Dim l_oGridDataItem As GridDataItem = DirectCast(e.Item, GridDataItem) 

      Dim l_oTextBox As TextBox = DirectCast(l_oGridDataItem("BillingRate").Controls(0), TextBox) 
      l_oTextBox.Enabled = False 
     End If 
End Sub 
Questions connexes