Jan 12, 2010, 4:44 AM
Need help in filtering
Hi,
Filter is not working in whole store .
Below is the code .
Filter is not working in whole store .
Below is the code .
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using Coolite.Ext.Web;
namespace Ilogs.Coolite.Sample
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Ext.IsAjaxRequest)
{
LoadData();
}
TestPagingToolbar.PageIndex = 1;
}
protected void LoadData()
{
ArrayReader reader = new ArrayReader { };
reader.Fields.Add(new RecordField("Test", RecordFieldType.String));
StoreTest.Reader.Add(reader);
object[] testData = new object[1000];
for (int i = 0; i < 1000; i++ )
testData[i] = new object[]{"Test "+i.ToString()};
StoreTest.DataSource = testData;
StoreTest.DataBind();
}
}
}
================================================== ===================================<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Ilogs.Coolite.Sample.Default" %>
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<ext:ScriptManager ID="ScriptManager2" runat="server" Locale="de-DE" />
<form id="form1" runat="server">
<ext:Store ID="StoreTest" runat="server" >
<AutoLoadParams>
<ext:Parameter Name="start" Value="={0}" Mode="Raw" />
<ext:Parameter Name="limit" Value="={50}" Mode="Raw" />
</AutoLoadParams>
</ext:Store>
<ext:GridPanel ID="GridTest" runat="server" StoreID="StoreTest" StripeRows="true"
TrackMouseOver="true" AutoExpandColumn="Test" AutoScroll="true" Height="500"
Width="600">
<ColumnModel ID="ColumnModel1" runat="server">
<Columns>
<ext:Column ColumnID="Test" Header="Test" Sortable="true" DataIndex="Test" />
</Columns>
</ColumnModel>
<Plugins>
<ext:GridFilters runat="server" ID="grdFilterRegion" Local="true" AutoReload="true" >
<Filters>
<ext:StringFilter DataIndex="Test" />
</Filters>
</ext:GridFilters>
</Plugins>
<View>
<ext:GridView ID="GridView2" runat="server">
<HeaderRows>
<ext:HeaderRow>
<Columns>
<ext:HeaderColumn Cls="x-small-editor">
<Component>
<ext:TextField ID="FilterTest" runat="server" EnableKeyEvents="true">
<Listeners>
<KeyUp Handler="applyFilter();" Buffer="250" />
</Listeners>
</ext:TextField>
</Component>
</ext:HeaderColumn>
</Columns>
</ext:HeaderRow>
</HeaderRows>
</ext:GridView>
</View>
<BottomBar>
<ext:PagingToolbar ID="TestPagingToolbar" runat="server" StoreID="StoreTest" PageSize="100"
DisplayMsg="{0} - {1} von {2}" EmptyMsg="Nothing here">
<Items>
</Items>
<Listeners>
<Render Handler="this.loading.hide();" />
</Listeners>
</ext:PagingToolbar>
</BottomBar>
</ext:GridPanel>
<ext:TokenScript ID="TokenScript1" runat="server">
<script type="text/javascript">
var applyFilter = function () {
var filter = getRecordFilter();
StoreTest.load(StoreTest.lastOptions);
#{StoreTest}.clearFilter(true);
#{StoreTest}.filterBy(filter);
}
var filterString = function (value, dataIndex, record) {
if (value == "00000000-0000-0000-0000-000000000000") return true;
var val = record.get(dataIndex);
if (typeof val != "string") return value.length == 0;
return val.toLowerCase().indexOf(value.toLowerCase()) > -1;
}
var getRecordFilter = function () {
var f = [];
f.push({ filter: function(record) { return filterString(#{FilterTest}.getValue(), 'Test', record); } });
var len = f.length;
return function(record) {
for (var i = 0; i < len; i++) {
if (!f[i].filter(record)) {
return false;
}
}
return true;
};
}
</script>
</ext:TokenScript>
</form>
</body>
</html>