2016-07-05 4 views
0

このRadGridにJOINを使用するEFデータソースがあります。クエリでJOINが使用されている場合にエンティティを更新します。

var result = db.Programmes.Join(db.Faculties, prog => prog.FacultyID, fac => fac.ID, 
(prog, fac) => new { 
       ID = prog.ID, 
       FacultyID = prog.FacultyID, 
       FacultyText = fac.FacultyName_mk, 
       StudyLevelID = prog.StudyLevelID, 
       Ects = prog.Ects 
      }).ToList(); 
RadGrid1.DataSource = result; 

これまでのところとても良いです。データが正しく表示されています。

問題は、新しいアイテム(プログラム)を挿入したり、既存のアイテム(プログラム)を更新したい場合に発生します。

protected void RadGrid1_UpdateCommand(object sender, GridCommandEventArgs e) 
{ 
    GridEditableItem item = e.Item as GridEditableItem; 
    // get the ID 
    Int32 id = (Int32)item.GetDataKeyValue("ID"); 
    // get the current record 
    var record = db.Programmes.Where(r => r.ID == id).FirstOrDefault(); 
    //update entity's information with what was entered in the RadGrid 
    item.UpdateValues(record); 
    db.SaveChanges(); 
    // close the edit form 
    RadGrid1.MasterTableView.ClearEditItems(); 
} 

このことは、FacultyID以外のすべての列を更新します。これはRadComboBoxコントロールから取得する必要があります。

<EditItemTemplate> 
    <telerik:RadComboBox runat="server" ID="cmbFacultyID" /> 
</EditItemTemplate> 

私はItemDataBound内からコンボを入札し、Facultiesエンティティから読み込みます。

このComboBoxからFacultyIDを読み取るプログラムテーブルを更新するにはどうすればよいですか?

は、それは、例えば、新たに選択された教員を割り当てる私は、クエリから取得した直後に私はちょうどレコードを更新する必要があることになりますので、多くの

答えて

0

をありがとう

// get the current record 
var record = db.Programmes.Where(r => r.ID == id).FirstOrDefault(); 
// FIX 
record.FacultyID = Convert.ToInt32(facultyid.SelectedValue); 
// update entity's information with what was entered in the RadGrid 
item.UpdateValues(record); 

今正常に動作します:) はあなた

ありがとう
関連する問題