故事: 我們有3個不同的表。 TimeReport,Dossier,BU 第一個連接到第二個,一對多。 第二個連接到第三個,一對多。 麻煩過濾電網
我們想使用radgrid組件來顯示'TimeReports'。 我們在過濾器中創建了'DossierId',並顯示'Description'屬性。 這工作正常。
我們現在的問題是我們要顯示和過濾例如BU.BUId和BU.Code是。 我們嘗試了這幾種方法,用java腳本或代碼隱藏起來。 不幸的是它不起作用。 問題似乎是我們想要訪問兩個表上的屬性。 (從 'TimeReport' 過度 '檔案' 到 'BU')
<telerik:GridBoundColumn DataField="Dossier.BU.Code" FilterControlAltText="Filter BUId column"
HeaderText="BU" SortExpression="BUId" UniqueName="BUId">
<FilterTemplate>
<telerik:RadComboBox ID="RadComboBoxTitle" DataSourceID="dsBU" DataTextField="Code"
DataValueField="BUId" AppendDataBoundItems="true" AutoPostBack="true"
OnPreRender="RadComboBoxTitle_PreRender"
runat="server" OnSelectedIndexChanged="RadComboBoxTitle_SelectedIndexChanged">
<Items>
<telerik:RadComboBoxItem Text="All" />
</Items>
</telerik:RadComboBox>
</FilterTemplate>
</telerik:GridBoundColumn>
代碼後面
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();
}
}
本準則引發錯誤的 「TimeReportGrid.Rebind()」。
'Dossier.BUId'在當前加載的模式中不是'Model.TimeReport'類型的成員。近逃脫標識,第6行,第5列
隨時在必要時提出問題。
感謝您的幫助和快速的答案。