【问题标题】:ASP.Net DataGrid selectively bound entriesASP.Net DataGrid 有选择地绑定条目
【发布时间】:2018-04-23 10:30:45
【问题描述】:

我对 ASP.Net 的了解较少。目前,我正在使用 ASP.Net DataGrid 控件,并成功映射了 UI 中的所有源信息。

myDataGrid.DataSource = MyCollectionOfObjects
myDataGrid.DataKeyField = "MyKey"
myDataGrid.DataBind()

现在,问题是,我不希望所有对象都映射到网格中。映射前需要做一些条件过滤。 DataGrid 中是否有任何功能可以让我决定绑定或不绑定某些对象?

1) 一种选择是通过应用所需的过滤将集合 (MyCollectionOfObjects) 映射到仅包含所需对象的新集合,但我目前不希望这样做。

例如,

foreach(var item in MyCollectionOfObjects)
{
  if(item.InvalidEntry)
  {
     // This entry is not needed
  }
  else
  {
    // Okay with this entry
  }
}

【问题讨论】:

  • 您很可能在将您的集合分配为数据源之前使用 LINQ 过滤您的集合。

标签: asp.net datagrid


【解决方案1】:

你可以做这样的事情。根据InvalidEntry 的值显示/隐藏占位符。

<asp:TemplateColumn>
    <ItemTemplate>

        <asp:PlaceHolder ID="PlaceHolder2" Visible='<%# Convert.ToBoolean(Eval("InvalidEntry")) %>' runat="server">

            <%# Eval("Column1") %>

        </asp:PlaceHolder>

    </ItemTemplate>
</asp:TemplateColumn>

但是,使用 Linq 过滤源数据会容易得多。

myDataGrid.DataSource = MyCollectionOfObjects.Where(x => x.InvalidEntry == false);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-25
    • 2014-09-04
    • 2013-02-25
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 2018-02-10
    相关资源
    最近更新 更多