التصفية على Radgrid لا تعمل
سؤال
لقد قمت بإنشاء رادغريد مع حقلتين للتصفية ولا يمكنني الحصول على تصفية العمل. أستطيع أن أراها تنشر بوضوح (شيء دائرة Ajax Spinny) بعد كتابة شيء ما في مربع التصفية ، ومع ذلك فإن نتائجي هي نفسها دائمًا. أنا أستخدم التعريف التالي في ملف ASPX:
<telerik:RadGrid PageSize="4" ID="RadGrid1" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" OnNeedDataSource="RadGrid1_NeedDataSource"
OnSelectedIndexChanged="RadGrid1_SelectedIndexChanged" Skin="Black" ShowFooter="True"
ShowStatusBar="True" AllowFilteringByColumn="True"
EnableLinqExpressions="False">
<MasterTableView AllowFilteringByColumn="true" Caption="Select a Customer">
<Columns>
<telerik:GridTemplateColumn CurrentFilterFunction="StartsWith" HeaderText="First Name" AllowFiltering="true" AutoPostBackOnFilter="true">
<ItemTemplate>
<%#GetFirstName(DataBinder.Eval(Container, "DataItem"))%>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Last Name" AllowFiltering="true" AutoPostBackOnFilter="true">
<ItemTemplate>
<%#GetLastName(DataBinder.Eval(Container, "DataItem"))%>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Address">
<ItemTemplate>
<%#GetAddress(DataBinder.Eval(Container, "DataItem"))%>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Shop">
<ItemTemplate>
<%#GetShopName(DataBinder.Eval(Container, "DataItem"))%>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
<RowIndicatorColumn>
<HeaderStyle Width="20px"></HeaderStyle>
</RowIndicatorColumn>
<ExpandCollapseColumn>
<HeaderStyle Width="20px"></HeaderStyle>
</ExpandCollapseColumn>
</MasterTableView>
<ClientSettings EnableRowHoverStyle="true" EnablePostBackOnRowClick="True">
<Selecting AllowRowSelect="true" />
</ClientSettings>
<PagerStyle Mode="NumericPages" />
</telerik:RadGrid>
وحصلت على ما يلي في الكود وراء:
protected void RadGrid1_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
BusinessLayer.Customers Customers = new BusinessLayer.Customers();
Customers.GetBySQLStatement(GetCustomerSQL());
this.RadGrid1.DataSource = Customers;
}
أيه أفكار؟
المحلول
يضيف حقل البيانات لكل عمود أو استخدام GridboundColumns بدلا من GridTemplateColumns.
نصائح أخرى
تعريف الشبكة الخاص بك يبدو جيدًا بالنسبة لي - لست متأكدًا من أين هي المشكلة. أستخدم شبكة Telerik من بعض الوقت الآن وما الذي سأفعله إذا كان في حذائك هو تصحيح الكود الخاص بي ، ومعرفة ما هي mastertableview.filterexpression قيمة داخل NeedDataSource وما إذا كانت السجلات التي تم إرجاعها تتم ترشيحها مع هذا التعبير وتم نقلها إلى الشبكة .
ديك
Public Sub RadGrid_NeedDataSource(ByVal source As RadGrid, ByVal e As GridNeedDataSourceEventArgs) 'Handles RadGrid.NeedDataSource
Dim RadGrid As RadGrid = CType(source, RadGrid)
'Dim nestedItem As GridNestedViewItem = CType(source.NamingContainer, GridNestedViewItem)
'Dim CustomerID = CType(nestedItem.ParentItem, GridDataItem).GetDataKeyValue(source.Attributes("TableID"))
Dim gridSortString As String = RadGrid.MasterTableView.SortExpressions.GetSortString()
Dim args As New DataSourceSelectArguments(gridSortString)
If gridSortString Is Nothing Then
RadGrid.DataSource = GetDataTable("SELECT * FROM [" + source.Attributes("TableName") + "] ") 'Where CustomerID = N'" + CustomerID + "'
Else
RadGrid.DataSource = GetDataTable("SELECT * FROM [" + source.Attributes("TableName") + "] ORDER BY " & gridSortString) 'Where CustomerID = N'" + CustomerID + "'
End If
End Sub
لا تنتمي إلى StackOverflow