C# 故障过滤栅
故事: 我们有三张不同的桌子。时间报告、档案、BU 第一个连接到第二个,一对多。 第二个连接到第三个,一对多。 我们希望使用radgrid组件来显示“时间报告”。 我们为“DossierId”内置了过滤器,并显示属性“Description”。 这个很好用 我们现在的问题是,我们想要显示和过滤例如BU.BUId和BU.Code。 我们尝试了几种方法,使用java脚本或代码隐藏。 不幸的是,它不起作用。 问题似乎是我们希望通过两个表访问属性。(从“档案”上方的“时间报告”到“BU”) 此代码在“TimeReportGrid.Rebind()”上引发错误 在当前加载的架构中,“Dossier.BUId”不是“Model.TimeReport”类型的成员。第6行第5列转义标识符附近。 如有必要,请随时提问C# 故障过滤栅,c#,asp.net,telerik,C#,Asp.net,Telerik,故事: 我们有三张不同的桌子。时间报告、档案、BU 第一个连接到第二个,一对多。 第二个连接到第三个,一对多。 我们希望使用radgrid组件来显示“时间报告”。 我们为“DossierId”内置了过滤器,并显示属性“Description”。 这个很好用 我们现在的问题是,我们想要显示和过滤例如BU.BUId和BU.Code。 我们尝试了几种方法,使用java脚本或代码隐藏。 不幸的是,它不起作用。 问题似乎是我们希望通过两个表访问属性。(从“档案”上方的“时间报告”到“BU”) 此代码在“
感谢您的帮助和快速回答。看起来您遇到了一个问题,在您进行筛选和重新绑定时,EntityFramework对象与数据库断开连接,并且无法延迟加载您尝试筛选的内容。尝试在加载网格的初始查询中使用语句,以便要筛选的表在正在筛选的断开连接的集合中可用
代码示例-具有以下代码优先实体框架对象:
public class MyContext : DbContext
{
public DbSet<TimeReport> TimeReport { get; set; }
public DbSet<Dossier> Dossier { get; set; }
public DbSet<BU> BU { get; set; }
}
public class BU
{
public int BUId { get; set; }
public string Code { get; set; }
}
public class Dossier
{
public int DossierId { get; set; }
[ForeignKey("BU")]
public int BUId { get; set; }
public BU BU { get; set; }
}
public class TimeReport
{
public int TimeReportId { get; set; }
[ForeignKey("Dossier")]
public int DossierId { get; set; }
public Dossier Dossier { get; set; }
}
这种联系是有效的
查看此链接以了解有关如何为
protected void RadComboBoxTitle_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
RadComboBox buCombo = sender as RadComboBox;
ViewState["buComboValue"] = buCombo.SelectedValue;
TimeReportGrid.MasterTableView.FilterExpression = "(it.[Dossier.BUId] = " + buCombo.SelectedValue + ")";
GridColumn column = TimeReportGrid.MasterTableView.GetColumnSafe("BUId");
column.CurrentFilterFunction = GridKnownFunction.EqualTo;
column.CurrentFilterValue = buCombo.SelectedValue;
TimeReportGrid.Rebind();
}
protected void RadComboBoxTitle_PreRender(object sender, EventArgs e)
{
if (ViewState["buComboValue"] != null)
{
RadComboBox buCombo = sender as RadComboBox;
buCombo.SelectedValue = ViewState["buComboValue"].ToString();
}
}
public class MyContext : DbContext
{
public DbSet<TimeReport> TimeReport { get; set; }
public DbSet<Dossier> Dossier { get; set; }
public DbSet<BU> BU { get; set; }
}
public class BU
{
public int BUId { get; set; }
public string Code { get; set; }
}
public class Dossier
{
public int DossierId { get; set; }
[ForeignKey("BU")]
public int BUId { get; set; }
public BU BU { get; set; }
}
public class TimeReport
{
public int TimeReportId { get; set; }
[ForeignKey("Dossier")]
public int DossierId { get; set; }
public Dossier Dossier { get; set; }
}
TimeReportGrid.MasterTableView.FilterExpression = "(it.Dossier.BUId = " + buCombo.SelectedValue + ")";