网格视图绑定

时间:2009-05-27 18:07:19

标签: asp.net gridview

我将Object数据源绑定到网格视图。我的对象在其中一个属性中有一组项目。这是一个列表。如何通过此循环并将项目绑定到GridView中的列?。

3 个答案:

答案 0 :(得分:1)

从对象获取Collection并使用

绑定它
myGridView.DataSource = myCollection; 
myGridView.DataBind();

答案 1 :(得分:0)

编辑:更新后调用后面代码中的方法为集合生成html标记。

在您的aspx标记中,您可以使用以下内容:

    <asp:GridView ID="myGridView" AutoGenerateColumns="False" runat="server">
        <Columns>
            <asp:BoundField HeaderText="Item Name" DataField="Name" />
            <asp:TemplateField HeaderText="Collection Field">
                <ItemTemplate>
                    <%# ((_Default)Page).GetHtmlForList(DataBinder.Eval(Container.DataItem, "List"))%>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

然后在你的代码背后你可以有这样的东西:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            myGridView.DataSource = GetCollection();
            myGridView.DataBind();
        }
    }

    public string GetHtmlForList(object value)
    {
        string html = "";
        List<string> list = (List<string>)value;
        foreach (string item in list)
            html += item + "<br/>";
        return html;
    }

    private List<MyClass> GetCollection()
    {
        List<MyClass> coll = new List<MyClass>();
        coll.Add(new MyClass { Name = "First Item", List = new List<string>(new string[] { "1", "2", "3" }) });
        coll.Add(new MyClass { Name = "Second Item", List = new List<string>(new string[] { "Apples", "Pears", "Oranges" }) });
        coll.Add(new MyClass { Name = "Third Item", List = new List<string>(new string[] { "Red", "Green", "Blue" }) });

        return coll;
    }
}

public class MyClass
{
    public string Name { get; set; }
    public List<string> List { get; set; }
}

答案 2 :(得分:0)

您是否在Col.模板中没有Repeater,只需在RowDataBound中将List绑定到它?