2016-03-21 2 views
0

Я пытаюсь привязать данные к gridview. В моих столбцах у меня есть 2 столбца, которые содержат список значений, но мой gridview не отображает данные для этих двух столбцов. Что я делаю неправильно с этим? Это мой код для контроллера griview»Показать список значений в Gridview

[DataObjectMethod(DataObjectMethodType.Select, false)] 
     public List<ListCourseByProgram> GetCourseByProgram(string programID) 
     { 
      int intProgramID = Int32.Parse(programID); 
      using (HiveMindContext context = new HiveMindContext()) 
      { 

       var results = from data in context.Courses 
           where data.ProgramID == intProgramID 
           select new ListCourseByProgram() 
           { 
            CourseID = data.CourseID, 
            ProgramID = intProgramID, 
            CourseName = data.CourseName, 
            Active = data.Active, 
            Credit = data.Credit, 
            Pre_Requisites = data.Pre_Requisites, 
            EquivCourseName = from equiName in data.Equivalencies 
                where data.CourseID == equiName.CourseID 

               select new CourseNameEquivalency() 
               { 
                EquivCourseName = equiName.EquivCourseName, 

               }, 
            EquivCourseID = from equiID in data.Equivalencies 
                where data.CourseID == equiID.CourseID 

               select new CourseIDEquivalency() 
               { 

                EquivCourseID = equiID.EquivCourseID 
               } 

           }; 
       return results.ToList(); 

      } 
     } 

Это мой код для Gridview:

<asp:GridView ID="Courses_Grid" runat="server" AutoGenerateColumns="False" Width="700px" > 

    <Columns> 
     <asp:TemplateField Visible="true"> 
        <HeaderTemplate> 
         CourseID 
        </HeaderTemplate> 
        <ItemTemplate> 
         <asp:Label ID="lblCourseID" runat="server" Text= '<%#Eval("CourseID") %>'> </asp:Label> 

        </ItemTemplate> 
     </asp:TemplateField> 


     <asp:BoundField DataField="ProgramID" HeaderText="ProgramID" SortExpression="ProgramID"></asp:BoundField> 
     <asp:BoundField DataField="CourseName" HeaderText="CourseName" SortExpression="CourseName"></asp:BoundField> 
     <asp:CheckBoxField DataField="Active" HeaderText="Active" SortExpression="Active"></asp:CheckBoxField> 
     <asp:BoundField DataField="Credit" HeaderText="Credit" SortExpression="Credit"></asp:BoundField> 
     <asp:BoundField DataField="Pre_Requisites" HeaderText="Pre_Requisites" SortExpression="Pre_Requisites"></asp:BoundField> 
     <%--<asp:BoundField DataField="EquivCourses" HeaderText="Equivalency" SortExpression="EquivCourses"></asp:BoundField>--%> 

     <asp:TemplateField Visible="true"> 
      <HeaderTemplate> 
       EquivalencyCourseName 
      </HeaderTemplate> 
      <ItemTemplate>    

       <asp:Repeater ID="CourseEquivRepeater" runat="server" DataSource='<%#Eval("EquivCourseNames")%>'> 
        <ItemTemplate> 
         <%# (Container.ItemIndex+1)+"."+ Container.DataItem %><br /> 
        </ItemTemplate>                   
       </asp:Repeater> 
      </ItemTemplate> 
     </asp:TemplateField> 

     <asp:TemplateField Visible="true"> 
      <HeaderTemplate> 
       EquivalencyCourseID 
      </HeaderTemplate> 
      <ItemTemplate>   
       <asp:Repeater ID="CourseEquivRepeater2" runat="server" DataSource='<%#Eval("EquivCourseIDs")%>'> 
        <ItemTemplate> 
         <%# (Container.ItemIndex+1)+"."+ Container.DataItem %><br /> 
        </ItemTemplate>                   
       </asp:Repeater> 
      </ItemTemplate> 
     </asp:TemplateField> 

    </Columns> 

И это картина моей gidview enter image description here

ответ

0

Я думаю, что нужно исправить ваш запрос

EquivCourseName = string.Join("<br />", (from equiName in data.Equivalencies 
        where data.CourseID == equiName.CourseID 
        select equiName.EquivCourseName).ToList()), 
EquivCourseID = string.Join("<br />", (from equiID in data.Equivalencies 
       where data.CourseID == equiID.CourseID 
       select equiID.EquivCourseID).ToList()), 
+1

Спасибо за ваш ответ. Но этот запрос используется для выбора списка значений, а тип данных EquivCourseName и EquivCourseID Ienumerable <>. Поэтому я думаю, что мне нужно вернуть список значений для них. – Kranatos

+0

Это класс DTO для моего контроллера: Публичный класс ListCourseByProgram { { public int CourseID {get; задавать; } public int ProgramID {get; задавать; } public string CourseName {get; задавать; } public bool Active {get; задавать; } public decimal Credit {get; задавать; } public string Pre_Requisites {get; задавать; } public IEnumerable EquivCourseName {get; задавать; } // public String EquivCourses {get; задавать; } public IEnumerable EquivCourseID {get; задавать; } } – Kranatos

+0

, то вы должны изменить свою сетку или использовать результат, разделенный на комы –

0

Я получил ответ уже. ульд быть:

<asp:Repeater ID="CourseEquivRepeater" runat="server" DataSource='<%#Eval("EquivCourseNames")%>'> 
     <ItemTemplate> 
     <%# (Container.ItemIndex+1)+"."+ Container.DataItem + Eval("EquivCourseName") %><br /> 
     </ItemTemplate>                   
    </asp:Repeater> 

в моем повторителя

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