我将Object数据源绑定到网格视图。我的对象在其中一个属性中有一组项目。这是一个列表。如何通过此循环并将项目绑定到GridView中的列?。
答案 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绑定到它?