2012-03-28 4 views
0

In regelmäßigen Formview gegen einen Object definieren wir die Methode für die Aktualisierung der Ereigniswerte zum Elemente hinzuzufügen, das bearbeitet wird, etwa so:RadGrid: Ändern extrahierten Werte auf Update-Befehl für automatisches Updates

protected void MyFormView_ItemUpdating(object sender, FormViewUpdateEventArgs e) 
{   
    RadComboBox countriesCombo = 
     (RadComboBox)MyFormView.FindControl("CountryRadComboBox"); 
    // this should never be null, other wise, error is shown 
    if (!string.IsNullOrEmpty(countriesCombo.SelectedValue)) 
     e.NewValues["CountryId"] = countriesCombo.SelectedValue; 

In einem RadGrid verwende ich ein Bearbeitungsformular. Legen Sie arbeitet großen diesen Code in der Methode PerformInsert Ereignis setzen:

GridEditFormInsertItem gridItem = (GridEditFormInsertItem)e.Item.OwnerTableView.GetInsertItem(); 

Hashtable values = new Hashtable(); 
gridItem.ExtractValues(values); 
values["ReferenceId"] = 0; 
RadComboBox comboCountries = (RadComboBox)gridItem.FindControl("CountryRadComboBox"); 
values["CountryID"] = comboCountries.SelectedValue;     
e.Item.OwnerTableView.InsertItem(values); 

jedoch versuchen, das gleiche für die Bearbeitung zu tun ist, nicht für mich arbeiten. Es ist der letzte Schritt, den ich nicht machen kann. Sobald ich die Hashtable-Werte mit dem Wert in der Combo ändere, wie zeige ich an, dass diese Werte verwendet werden müssen?

In den Telerik-Beispielen arbeiten sie es mit einer DataTable aus, die von der Datenquelle erhalten wird und dann das Mapping und die Aktualisierung im Code macht .... das möchte ich nicht tun, ich würde es lieben würde genauso funktionieren Einfügen tut. Für den Fall, dass ich keinen Wert in der Hashtabelle ändern muss, funktioniert das Update einwandfrei.

Jede Hilfe willkommen Vladimir

+0

Ich nehme an, Sie verwenden ihr Automagic-Update, mit einem 'SqlDataSource' Steuerelement auf der Seite? –

+0

Ich verwende eine ObjectDataSource, die die InsertMethod, UpdateMethod, DeleteMethod und SelectMethod gut deklariert hat. Diese Objektdatenbank ist die Datenquelle für mein RadGrid. – Vladimir

Antwort

1

Wenn ich mich nicht irre, sollten die extrahierten Werte bereits auf den gewählten Wert der Dropdown eingestellt werden. Versuchen Sie Bind mit dem ausgewählten Wert im Markup zu setzen:

<telerik:RadComboBox ID="ddlCountries" runat="server" 
    SelectedValue='<%# Bind("CountryID") %>' ...> 
+0

Nun, zuerst, die selectedValue Eigenschaft erscheint nicht in den gültigen Eigenschaften für RadComboBox in meinem Fall (ich habe versucht, es trotzdem und es funktioniert nicht). Aber angenommen, dies ist ein anderes Problem für mich und radcombobox, wie kann ich dies für komplexe Komponenten und/oder Situationen tun, in denen ich das Verhalten, wie in der Frage beschrieben, brauche? – Vladimir

+0

Intellisense hebt es nicht auf, aber es ist da. Ich habe es oft benutzt. Nicht sicher, warum es nicht funktioniert hat, wenn Sie es versucht haben, aber es sollte, wenn es richtig gemacht wird. Haben Sie versucht, ** Bind ** und ** Eval ** zu verwenden? Welche Art von Datenquelle verwenden Sie und können Sie näher erläutern, was Sie mit Verhalten meinen? –