2014-01-14 3 views
0

У меня есть два SQL таблицы Department и лектор:Как отображать данные из нескольких таблиц в одном gridview или gridpanel с использованием linq2sql?

Department: DepartmentID, Name 
Lecturer: LecturerID, Name, DepartmentID 

Я хочу, чтобы отобразить данные в таблице со столбцами:

Lecturer ID, Name and Department Name 

Как я могу добиться этого с помощью Linq к Sql (с или без лямбда-выражения)? Я действительно ценю твою помощь. Спасибо.

ответ

0

Спасибо за ваш ответ singhm0077. Я немного смущен присоединяюсь, и, к сожалению, он не работает, как я думал. К счастью, я нашел другое решение.

Поскольку нет столбца DepartmentName в таблице Лектор, я должен был создать частичный класс таблицы лектора, потому что я собирался связать данные из лектора таблицу и я определил свойство DepartmentName, который добавил столбец в таблице базы данных.

public partial class Lecturer 
    { 
     public string DepartmentName 
     { 
      get; 
      set; 
     } 
    } 

Конструкция часть:

<ext:GridPanel ID="grid1" runat="server" Width="600px" Header="false"> 
      <Store> 
       <ext:Store ID="store1" runat="server"> 
        <Model> 
         <ext:Model ID="model1" runat="server"> 
          <Fields> 
           <ext:ModelField Name="LecturerID" Type="Int" /> 
           <ext:ModelField Name="Name" Type="String" /> 
           <ext:ModelField Name="DepartmentName" Type="String" /> 
          </Fields> 
         </ext:Model> 
        </Model> 
       </ext:Store> 
      </Store> 
      <ColumnModel> 
       <Columns> 
        <ext:Column ID="colLecturerID" runat="server" Flex="1" DataIndex="LecturerID" Text="Lecturer ID"></ext:Column> 
        <ext:Column ID="colName" runat="server" Flex="1" DataIndex="Name" Text="Name"></ext:Column> 
        <ext:Column ID="colDepartmentName" runat="server" Flex="1" DataIndex="DepartmentName" Text="Department Name"></ext:Column> 
       </Columns> 
      </ColumnModel> 
     </ext:GridPanel> 

И используя Linq2Sql, код за его части:

protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!X.IsAjaxRequest) 
      { 
       this.store1.DataSource = GetDataToBind(); 
       this.store1.DataBind(); 
      } 
     } 

     private List<Lecturer> GetDataToBind() 
     { 
      DataBaseDataContext db = new DataBaseDataContext(); 

      List<Lecturer> lstLecturers = db.Lecturers.OrderBy(x => x.LecturerID).ToList(); 
      foreach (Lecturer lecturer in lstLecturers) 
      { 
       lecturer.DepartmentName = lecturer.Department.Name; 
      } 

      return lstLecturers; 
     } 

Наконец, если база данных заключаются в следующем:

Lecturer TableDepartment Table

Выход будет выглядеть так:

enter image description here

Тем не менее, я не знаю, если его лучший способ это сделать или нет. Тем не менее, его работа все время.

1

вам нужно использовать присоединиться Разногласия между столом отдела и преподаватель таблицы

DataClassesDataContext TDC = новый DataClassesDataContext();

var res = (from p in tdc.Lecturers 

       join br in tdc.Departments on p.DepartmentID equals br.DepartmentID 

       select new 
       { 
        p.DepartmentID, 
        p.Name, 
        lectID = p.DepartmentID, 
        depname = br.Name 
       } 
        ).ToList(); 

запрос будет выглядеть следующим образом

http://www.dotnetperls.com/join

+0

Я попытался, но ошибка говорит: «Анонимный тип не может иметь несколько свойств с тем же именем». – FREAKYHUNTER

+1

@FREAKYHUNTER Я обновил свой код, это решит вашу проблему – singhm0077

Смежные вопросы