【问题标题】:ASP.NET DataGrid BoundColumnASP.NET DataGrid BoundColumn
【发布时间】:2014-07-26 20:56:03
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用TemplateColumn,而不是使用BoundColumn。然后,您可以像这样在列中放置一个标签:

    <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];
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2011-04-15
      • 2015-12-28
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      • 2011-12-14
      • 1970-01-01
      • 2013-12-14
      相关资源
      最近更新 更多