2014-01-22 76 views
0

我知道這是可能的,但我不知道如何使它發生。我需要從ASP.NET C#後面的代碼創建多個Repeater控件。我知道如何動態創建中繼器以及HeaderTemplate和FooterTemplate。我遇到問題的地方在ItemTemplate上。我不知道如何綁定來自DataSource的字段。我見過很多例子,但沒有一個能夠工作。如何從代碼後面填入anRepeater.ItemTemplate

這是我如何建立我的HeaderTemplate中:

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>"; 
} 
} 

希望它可以幫助

相關問題