RadComboBox SelectedIndexChanged-Ereignis nicht auslösen, wenn mit in-Place-Bearbeitung in einer RadGrid
Ich bin mit inplace-editing auf ein RadGrid gebaut ist, dass mit einer class-Datei. Alles funktioniert gut, außer ich habe ein Problem das SelectedIndexChanged-Ereignis nicht auslösen, wenn das raster im edit-Modus. Irgendwelche Gedanken?
private void RadGrid_ItemCreated(object sender, GridItemEventArgs e)
{
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
{
try
{
if ((e.Item as GridDataItem) == null) { return; }
((RadNumericTextBox) (e.Item as GridDataItem)["Percentage"].Controls[0]).Width = Unit.Pixel(75);
((TextBox) (e.Item as GridDataItem)["Code"].Controls[0]).Width = Unit.Pixel(75);
RadComboBox _participantList = (e.Item as GridEditableItem)["ID"].Controls[0] as RadComboBox;
if (null == _participantList) { return; }
_participantList.Width = Unit.Pixel(120);
_participantList.DataValueField = "ID";
_participantList.DataTextField = "ID";
_participantList.AutoPostBack = true;
_participantList.DataSource = MAASBaseInterface.ParticipantAPI.GetParticipants();
_participantList.DataBind();
_participantList.SelectedIndexChanged += new RadComboBoxSelectedIndexChangedEventHandler(_participantList_SelectedIndexChanged);
if (!(e.Item.DataItem is GridInsertionObject))
_participantList.SelectedValue = ((Participant) (e.Item.DataItem)).ID.ToString();
if (e.Item.DataItem is GridInsertionObject)
_participantList.EmptyMessage = "-- Select --";
}
catch (Exception ex)
{
string _ex = ex.Message;
}
}
}
void _participantList_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
//first reference the edited grid item through the NamingContainer attribute
GridEditableItem editedItem = (sender as RadComboBox).NamingContainer as GridEditableItem;
int _selectedValue = Convert.ToInt32((editedItem["ID"].Controls[0] as RadComboBox).SelectedValue);
ParticipantList _participants = MAASBaseInterface.ParticipantAPI.GetParticipants();
Participant _participant = _participants.Where(a => a.ID == _selectedValue) as Participant;
RadTextBox _code = editedItem["Code"].Controls[0] as RadTextBox;
_code.ReadOnly = false;
_code.Text = _participant.Code;
}
InformationsquelleAutor Tim | 2011-12-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie eine Taste, die
CommandName="Select"
gesetzt. Ohne, dass das Ereignis nicht auslösen. Könnte das das problem sein?Diese link gibt mehr detail
EDIT:
Das problem könnte sein, dass die dropdown-Liste wird dynamisch Hinzugefügt, um die Gitter, so dass die Veranstaltung muss Hinzugefügt werden, jedes mal, wenn die Zeile gebunden ist. In meiner Erfahrung ist die radGrid und das GridView arbeitet in der gleichen Weise mit Bezug auf das Ereignis-Modell, so dieses SO beantworten zu Sortieren Sie aus. Viel Glück - meine erste thoughs waren, dass dies nicht sein konnte nicht, aber es kann ein Weg nach vorne
Ich glaube nicht, Sie sind overlooing nichts. Ich meine Erfahrungen die radGrid und GridViews wirken in ähnlicher Weise mit Bezug auf das event-Modell. Diesen link forums.asp.net/t/1313185.aspx/1 details someones Kämpfe. Wenn ich du wäre würde ich versuchen zu einer Neugestaltung der Seite, nehmen Sie das selectedindexchanged-und get-Dinge, die Arbeit über einen command-button und die onitemcommand Veranstaltung. Es ist der einzige Weg, den ich erfolgreich bestanden haben, Befehle aus dieser Art von Gitter. Sorry, wenn dies ist nicht, was Sie suchen
Eigentlich ich habe foud eine mögliche Lösung, die habe ich als edit auf die Frage
Hey Tim. Vielen Dank für alle Ihre wertvollen input. Es Tat provozieren, dachte aber ach nicht von es das problem gelöst. Ich habe das Problem und Sie kann nicht glauben, was es ist. Siehe meine Antwort oben.
Wow - das ist nicht offensichtlich. Froh, dass du es gelöst hast.
InformationsquelleAutor Crab Bucket
Das problem war, dass ich nur die Einstellung der Value-Eigenschaft des RadComboBox und nicht die Text-Eigenschaft. Obwohl text-Wert zeigte in der RadComboBox im edit-Modus anscheinend war es die Anzeige der Value-Eigenschaft. Sobald es eingestellt wurde, es begann posting wieder so, wie es gedacht war.
InformationsquelleAutor Tim