1

我有一个 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>
4

1 回答 1

2

BoundColumn您可以使用 a而不是使用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>

您会注意到我还包含了事件“OnItemDataBound”——它允许您在页面后面的代码中执行操作。从这里,您将希望按如下方式创建一个事件,并且您可以获得所需的任何属性并将 Literal 的文本设置为您需要的内容。

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];
        }
    }
于 2014-06-05T20:53:42.153 回答