ASP.NET DataGrid BoundColumn

时间:2014-06-05 18:20:56

标签: c# asp.net .net datagrid boundcolumn

我有一个ASP.NET DataGrid,其中每个行对象都允许通过以下机制访问其数据:public object this[string fieldName] { get; }。这意味着在XML中我需要做类似的事情并且不能只使用PropertyName。这个班级是第三方,所以我不能为它制作一个房产。是否有任何语法可以使这项工作?

<asp:DataGrid ID="test" runat="server" PageSize="25" AllowPaging="True" AutoGenerateColumns="False">
        <Columns>
            <asp:BoundColumn HeaderText="Test" DataField="this['iswhatiwanttodo']">
            </asp:BoundColumn>
        </Columns>
    </asp:DataGrid>

1 个答案:

答案 0 :(得分:2)

您可以使用BoundColumn代替使用TemplateColumn,而不是<asp:DataGrid ID="test" runat="server" PageSize="25" AllowPaging="True" AutoGenerateColumns="False" OnItemDataBound="test_ItemDataBound"> <Columns> <asp:TemplateColumn HeaderText="Test"> <ItemTemplate> <asp:Literal ID="litName" runat="server" /> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp:DataGrid> 。然后,您可以在列中放置标签,如下所示:

protected void test_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
        Literal name;
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            name = (Literal)e.Item.FindControl("litName");
            name.Text = [Grab Your Property Value Here];
        }
    }

你会注意到我还包括了事件&#34; OnItemDataBound&#34; - 它允许您在页面后面的代码中执行操作。从这里开始,您将要创建如下事件,您可以获得所需的任何属性,并将Literal的文本设置为您需要的内容。

{{1}}