C# 将列表中的列表绑定到GridView

C# 将列表中的列表绑定到GridView,c#,asp.net,data-binding,gridview,C#,Asp.net,Data Binding,Gridview,我有一个包含所有不同类型数据成员的类,包括字符串列表。当我将数据绑定到GridView时,我希望能够将字符串列表分离到GridView中的不同列中。这些字符串更像标志,最多有3个标志。如果没有应用任何标志,则列表可以为空,也可以仅包含一个或两个标志。如何将这些标志分离到不同的GridView列中?是否需要在OnRowDataBound事件中执行此操作 目前,我的aspx代码看起来像这样。我希望能够根据是否升起标志来更改图像控件的ImageUrl <asp:TemplateField Hea

我有一个包含所有不同类型数据成员的类,包括字符串列表。当我将数据绑定到GridView时,我希望能够将字符串列表分离到GridView中的不同列中。这些字符串更像标志,最多有3个标志。如果没有应用任何标志,则列表可以为空,也可以仅包含一个或两个标志。如何将这些标志分离到不同的GridView列中?是否需要在OnRowDataBound事件中执行此操作

目前,我的aspx代码看起来像这样。我希望能够根据是否升起标志来更改图像控件的ImageUrl

<asp:TemplateField HeaderText="Tax" SortExpression="Tax">
    <ItemTemplate>
        <asp:Image ID="imgTax" runat="server" />
    </ItemTemplate>
</asp:TemplateField>

    <asp:TemplateField HeaderText="Compliance" SortExpression="Compliance">
    <ItemTemplate>
        <asp:Image ID="imgCompliance" runat="server" />
    </ItemTemplate>
</asp:TemplateField>

    <asp:TemplateField HeaderText="Accounting" SortExpression="Accounting">
    <ItemTemplate>
        <asp:Image ID="imgAccounting" runat="server" />
    </ItemTemplate>
</asp:TemplateField>


谢谢

有没有办法修改数据,将这些字符串转换成布尔值?以这种方式使用字符串给我的印象是代码的味道。就我个人而言,我会将这些字符串转换为您用作网格数据源的类的布尔属性,并在标记中修改它们的可见性属性,而不是返回数据库以逐行选择这些属性

不管怎样,可以这样使用RowDataBound事件:

yourGrid_RowDataBound(object sender, EventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        YourClass currentClass = (YourClass) e.Row.DataItem;

        for (int i = 0; i < currentClass.stringFlags.Length; i++)
        {
            string currentFlag = currentClass.stringFlags[i];

            if (currentFlag == "Tax")
            {
                Image imgTax = (Image) e.Row.FindControl("imgTax");
                imgTax.Visbile = true;
            }
            else if (currentFlag == "Compliance")
            {
                Image imgCompliance = (Image) e.Row.FindControl("imgCompliance");
                imgCompliance.Visbile = true;
            }
            else if (currentFlag == "Accounting")
            {
                Image imgAccounting = (Image) e.Row.FindControl("imgAccounting");
                imgAccounting.Visbile = true;
            }
        }
    }
}
yourGrid\u rowdabund(对象发送方,事件参数e)
{
如果(e.Row.RowType==DataControlRowType.DataRow)
{
YourClass currentClass=(YourClass)e.Row.DataItem;
对于(int i=0;i
因此,您需要根据标志的存在以编程方式显示/隐藏这些图像?谢谢!这帮了大忙。最初,字符串是另一层中的枚举,但由于该层和GUI之间的某种原因,它们更改为字符串。我会看看我能做些什么来改变这一点。