【问题标题】:Getting Xml Columns from LinqDataSource to appear in a GridView从 LinqDataSource 获取 Xml 列以显示在 GridView 中
【发布时间】:2010-07-25 21:31:33
【问题描述】:

我有一个 LinqDataSource 和一个显示表格的 GridView。 xml 类型的列不显示。我希望他们像在 Sql Server 查询输出中一样显示一些东西,并带有一个链接来显示可点击的 xml,尽管我可能没有考虑另一种方法(可能是 xml 数据的样式显示等)。 )。有两件事我想知道怎么做

  • 首先,获取转换为字符串的xml,并将其显示在表格中。可能是前 30 个字符。
  • 最后,将 xml 设置为有用的样式,例如显示完整 xml 的可点击链接、子表或样式字符串。

所以下面的工作,并显示一个漂亮的表格,带有编辑和删除链接。但是缺少 Xml 字段。您将如何添加对 Xml 字段的支持?

<form id="form1" runat="server">
<div>
    <asp:LinqDataSource ID="OrdersDataSource"
        OnContextCreating="LinqDataSource_ContextCreating"
        runat="server" ContextTypeName="MyDbDataContext"
        EnableUpdate="True" TableName="orders"
        EnableDelete="true"
        OrderBy="Status, UserId">
    </asp:LinqDataSource>
    <asp:GridView ID="OrdersGridView" DataSourceID="OrdersDataSource"
        CssClass="gridview" PageSize="30" AutoGenerateDeleteButton="true"
        AutoGenerateEditButton="true" AllowPaging="True" AllowSorting="True"
        AlternatingRowStyle-BackColor="Beige" DataKeyNames="OrderId"
        runat="server" Width="705px">
        <Columns>
        </Columns>
    </asp:GridView>
</div>
</form>

Page_Load 目前为空。

【问题讨论】:

    标签: c# asp.net linq-to-sql gridview linqdatasource


    【解决方案1】:

    最好的方法是使用 GridView 的RowDataBound 事件。这看起来像这样:

    protected void OrdersGridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            var dataItem = e.Row.DataItem;
            ...
        }
    }
    

    我不确定dataItem 的类型是什么,但也许您可以将其转换为您的订单类型(在调试器中最容易看到,只需在 RowDataBound 事件处理程序中设置一个断点)。您应该能够从此对象获取您的 xml 数据。例如,当您拥有 xml 数据时,可以将其转换为字符串并获取前 30 个字符。

    最后要做的是将此文本设置在正确的单元格中。请参阅example on MSDN

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多