2009-06-04 3 views
1

많은 행이있는 테이블에 데이터베이스가 있는데 그 행을 보통 행 (Gridview가 아님)으로 표시하려고합니다. 마찬가지로 : 클래스 1/1, 클래스 2/1, 클래스 3/1DB에서 많은 행을 정상선으로 표시 하시겠습니까?

우리가 가지고

(1/1 및 2/1 및 3/1)에서 :

이러한 수업을 데이터 베이스.

어떻게하면됩니까?

참고 : 저는 LINQ를 사용하여 데이터베이스를 처리합니다.

답변

1

리피터를 사용하는 것이 나에게 가장 쉬운 방법 인 것 같습니다. 이런 식으로 보일 겁니다.

<div> 
    You teach these classes: 
    <asp:Repeater 
     ID="rptListOfClasses" 
     runat="server" 
     DataSourceID="linqDataSource" > 
     <ItemTemplate> 
      <span> class <%# Eval("ClassDate") %>, </span> 
     </ItemTemplate> 
    </asp:Repeater> 
</div> 
0
<asp:ListView ID="lvClass" runat="server" DataSourceID="LinqDataSource1" OnItemDataBound ="lvResult_ItemDataBound" > 
    <LayoutTemplate> 
     You teach these classes:&nbsp; 
     <asp:PlaceHolder runat="server" ID="itemPlaceHolder" ></asp:PlaceHolder> 
    </LayoutTemplate> 
    <ItemTemplate> 
      <asp:Label ID="lblClass" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Class") + ", " %>' ></asp:Label>           
    </ItemTemplate> 

</asp:ListView> 


<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
    ContextTypeName="MyDataContext" TableName="ClassList" 
    onselected="LinqDataSource1_Selected"> 
</asp:LinqDataSource> 

코드 뒤에 : //은

public class Test : System.Web.UI.Page 
    { 
     int iCount = 0; 
protected void lvResult_ItemDataBound(object sender, ListViewItemEventArgs e) 
     { 
      if (e.Item.ItemType == ListViewItemType.DataItem) 
      { 

       Label lblClass = e.Item.FindControl("lblClass") as Label; 
       ListViewDataItem lvItem = e.Item as ListViewDataItem ; 
       if (lblClass != null) 
        if (lvItem.DataItemIndex == (iCount - 1)) 
         lblClass.Text = lblClass.Text.Substring(0, lblClass.Text.ToString().Length - 2); 



      } 
     } 

     protected void LinqDataSource1_Selected(object sender, LinqDataSourceStatusEventArgs e) 
     { 
      iCount = e.TotalRowCount; 
     } 

} 
(,) 마지막 쉼표를 제거
관련 문제