2014-01-22 2 views
0

나는 이것이 가능하다는 것을 알고 있지만 어떻게되는지 알지 못합니다. ASP.NET C#의 코드에서 여러 Repeater 컨트롤을 만들어야합니다. HeaderTemplate 및 FooterTemplate뿐만 아니라 동적으로 리피터를 만드는 방법도 알고 있습니다. 문제가있는 곳은 ItemTemplate입니다. DataSource에서 오는 필드를 바인딩하는 방법을 모르겠습니다. 나는 많은 예를 보았지만 그들 중 누구도 일하지 않았다. 내는 HeaderTemplate 짓고 있어요 방법 코드 뒤에서 anRepeater.ItemTemplate을 채우는 방법

은 다음과 같습니다

TemplateBuilder hdr = new TemplateBuilder(); 
hdr.AppendLiteralString("<table><thead><tr><th>Team</th></tr></thead>"); 

을 그리고 이것은 내 FooterTemplate 영역 짓고 있어요 방법입니다

TemplateBuilder ftr = new TemplateBuilder(); 
ftr.AppendLiteralString("</table>"); 

이 내가 내 템플릿을 연결하고있어 방법입니다 리피터 :

Repeater repeater1 = new Repeater(); 
repeater1.DataSource = Connections.isp_GET_GRIDVIEW_DATA("STDNG", group, "", ""); 
repeater1.HeaderTemplate = hdr; 
repeater1.ItemTemplate = dtl; 
repeater1.FooterTemplate = ftr; 
repeater1.DataBind(); 

이제 내 문제는이 코드 부분입니다 :

TemplateBuilder dtl = new TemplateBuilder(); 
dtl.AppendLiteralString(???); 

repeater1.ItemTemplate에 대한 템플릿을 어떻게 만듭니 까? 어떻게 데이터를 바인딩 할 수 있습니까?

답변

0

, 그것은

을하는 데 도움이
using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
using System.Data.SqlClient; 
using System.ComponentModel; 

/// <summary> 
/// Summary description for Repeater_Templates 
/// </summary> 
public class Repeater_Templates : ITemplate 
{ 
    static int itemcount = 0; 
    ListItemType templateType; 

public Repeater_Templates(ListItemType type) 
{ 
    templateType = type; 
} 

public void InstantiateIn(System.Web.UI.Control container) 
{ 
    Literal lc = new Literal(); 
    switch(templateType) 
    { 
     case ListItemType.Header: 
      lc.Text = "<table class=\"table zebra-striped\"><thead><tr><th>Equipo</th><th>J</th><th>G</th><th>E</th><th>P</th><th>G</th><th>E</th><th>D</th><th>PTS</th></tr></thead><tbody><tr>"; 
     break; 
    case ListItemType.Item: 
     lc.Text = "<td>"; 
     lc.DataBinding += new EventHandler(TemplateControl_DataBinding); 
     break; 
    case ListItemType.AlternatingItem: 
     lc.Text = "<td>"; 
     lc.DataBinding += new EventHandler(TemplateControl_DataBinding); 
     break; 
    case ListItemType.Footer: 
     lc.Text = "</tbody></table>"; 
     break; 
    } 
    container.Controls.Add(lc); 
    itemcount += 1; 
} 

private void TemplateControl_DataBinding(object sender, System.EventArgs e) 
{ 
    Literal lc; 
    lc = (Literal)sender; 
    RepeaterItem container = (RepeaterItem)lc.NamingContainer; 
    lc.Text += "<img style=\"vertical-align:middle\" src=\"" + DataBinder.Eval(container.DataItem, "LOCATION") + "\" /> " 
     + DataBinder.Eval(container.DataItem, "TEAM") + "</td><td>" + DataBinder.Eval(container.DataItem, "GAMES") + "</td><td>" + DataBinder.Eval(container.DataItem, "WON") 
     + "</td><td>" + DataBinder.Eval(container.DataItem, "DRAW") + "</td><td>" + DataBinder.Eval(container.DataItem, "LOST") + "</td><td>" + DataBinder.Eval(container.DataItem, "GOALS") 
     + "</td><td>" + DataBinder.Eval(container.DataItem, "AGAINST") + "</td><td>" + DataBinder.Eval(container.DataItem, "DIFFERENCE") + "</td><td>" + DataBinder.Eval(container.DataItem, "POINTS"); 
    lc.Text += "</td><tr>"; 
} 
} 

는 희망이 가장 좋은 방법 있는지 알고 있지만 작동하지 않습니다
관련 문제