1

我有一个 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 目前是空的。

4

1 回答 1

0

最好的方法是使用 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 个字符。

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

于 2010-07-29T09:21:00.250 回答