2011-12-21 6 views
1

クラスファイルを使用して構築されたRadGridでインプレイス編集を使用しています。グリッドが編集モードのときにSelectedIndexChangedイベントが発生しないという問題がある以外は、すべてうまくいっています。何かご意見は?RadComboBox RadGridでインプレース編集を使用するとSelectedIndexChangedイベントが発生しない

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; 
} 

答えて

1

問題は、私がTextプロパティではなくRadComboBoxのValueプロパティを設定しているということでした。編集モードではRadComboBoxにテキスト値が表示されていましたが、明らかにValueプロパティが表示されていました。それが設定されるとすぐに、それはやっていたように転記を開始しました。

   if (!(e.Item.DataItem is GridInsertionObject)) 
       { 
        _participantList.SelectedValue = 
         ((ReinsuranceAgreementParticipant) (e.Item.DataItem)).LegacyReinsurerID.ToString(); 
        // I added this line 
        _participantList.Text = ((ReinsuranceAgreementParticipant)(e.Item.DataItem)).LegacyReinsurerID.ToString(); 
       } 
       if (e.Item.DataItem is GridInsertionObject) 
        _participantList.EmptyMessage = "Select Reinsurer"; 
1

CommandName="Select"のボタンが必要です。それがなければ、イベントは引き起こされません。それが問題だろうか?イベントは、行がバインドされるたびに追加する必要があるように

問題はドロップダウンリストが動的にグリッドに追加されていることが考えられます。

このlink

EDIT詳細を提供します。私の経験ではradGridとGridViewは同じようにイベントモデルに関して動作しますので、このSO answerはあなたを並べ替えるかもしれません。幸運なことに、これはできないということでしたが、方法があるかもしれません。

+0

ありがとう、私はradgridのselectedindexchangedイベントを探していません。 Radcomboboxの選択された索引が変更されたものが必要です。私はそのイベントを発生させる選択ボタンが必要ないことを知っています。私はtelerikがそのデモ用に使用しているサンプルを見ましたが、私が行ったように.aspxページでradcomboboxを定義しました。私は何かを見落としているが、わたしは知らない。 – Tim

+0

@Tim私はあなたが何かを過ぎているとは思わない。私の経験では、radGridとGridViewはイベントモデルに関して同様の方法で動作します。このリンクhttp://forums.asp.net/t/1313185.aspx/1は、いくつかの苦労を詳述しています。もし私があなただったら、私は選択されたインデックスを取り出して、コマンドボタンとonitemcommandイベントを使って作業を行うようにページを再設計しようとします。これらのタイプのグリッドからコマンドを正常に渡したのは、これが唯一の方法です。あなたが探していたものではない場合はごめんなさい –

+0

@Tim実際に私は質問に編集として含めることが可能な解決策をfoudしました –

関連する問題