이야기 : 우리는 3 가지 테이블을 가지고 있습니다. TimeReport, Dossier, BU 첫 번째 것은 두 번째 것과 하나, 여러 개가 연결되어 있습니다. 두 번째 것은 세 번째 것, one to many에 연결됩니다. 트러블 필터링 그리드
'시간보고'를 표시하려면 radgrid 구성 요소를 사용하고 싶었습니다. 예를 들어 'DossierId'에 필터를 내장하고 '설명'속성을 표시하고 있습니다. 이 작동합니다.
이제 우리는 BU.BUId 및 BU.Code와 같은 필터를 표시하고 필터링하려고합니다. 우리는 자바 스크립트 또는 코드 뒤에 여러 가지 방법을 시도했다. 불행히도 작동하지 않습니다. 문제는 두 테이블에 걸쳐 속성에 액세스하려는 것 같습니다. 이 코드에서 오류가 발생합니다
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();
}
}
뒤에
<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>
코드 "TimeReportGrid.Rebind()"('BU'에서 '서류'를 통해 'TimeReport'에서).
'Dossier.BUId'는 현재로드 된 스키마에서 'Model.TimeReport'형식의 멤버가 아닙니다. 이스케이프 된 식별자 6 행 5 번 근처.
필요하면 언제든지 질문하십시오.
귀하의 도움과 빠른 답변에 감사드립니다.