Ext.Net 학습 노트 09: Ext.Net Store 사용 방법
15499 단어 store
Handler를 사용하여 페이지 나누기 처리
우선 일반 프로세서를 만듭니다. 저는 StoreHandler라고 명명합니다.ashx 및 처리 프로세스 코드는 다음과 같습니다.
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json";
var requestParams = new StoreRequestParameters(context);
int start = requestParams.Start;
int limit = requestParams.Limit;
DataSorter[] sorter = requestParams.Sort;
DataFilter[] filter = requestParams.Filter;
Paging<UserInfo> employees = GetPageData(start, limit, filter, sorter);
context.Response.Write(JSON.Serialize(employees));
}
이 방법에서 우리는 우선HttpContext를 사용하여StoreRequestParameters 대상을 만들고 이 대상에는 Start,Limit,Page,sort,Filter,Group 등의 매개 변수가 포함되어 있다.
public Paging<UserInfo> GetPageData(int start, int limit,
DataFilter[] filter, DataSorter[] sorter)
{
var userInfoList = UserInfo.GetData();
Paging<UserInfo> result = new Paging<UserInfo>(); result.TotalRecords = userInfoList.Count; result.Data = userInfoList.Skip(start).Take(limit).ToList();
return result;
}
이 handler를 사용하면 다음과 같이 Store를 개조해야 합니다.
<ext:Store runat="server" ID="storeUserInfo" PageSize="5" RemoteFilter="true" RemoteSort="true">
<Model>
<ext:Model ID="Model1" runat="server" IDProperty="Name">
<Fields>
<ext:ModelField Name="Name" Type="String"></ext:ModelField>
<ext:ModelField Name="Gender" Type="String"></ext:ModelField>
<ext:ModelField Name="Age" Type="Int"></ext:ModelField>
</Fields>
</ext:Model>
</Model>
<Proxy> <ext:AjaxProxy Url="StoreHandler.ashx"> <ActionMethods Read="GET" /> <Reader> <ext:JsonReader Root="data" /> </Reader> </ext:AjaxProxy> </Proxy>
</ext:Store>
AjaxProxy의 Url이 바로 저희의Handler 주소입니다.ActionMethods는 요청 방식이고 JsonReader는reader 속성이며 데이터 루트 노드는 데이터입니다.여기는 모두 ExtJS에서 aaxproxy에 의해 정의된 것이다. 당신은 나의 이전 글을 보고 이 방면의 내용을 이해할 수 있다. ExtJS 4.2 자습서 - 06: 서버 에이전트(proxy)
PageProxy 페이지 나누기 구현
PageProxy는 Ext.Net이 실현하는 페이지 나누기 방식으로handler를 사용하는 방식과 달리 PageProxy는 OnReadData 이벤트를 실현함으로써 페이지 나누기를 완성한다.
Store 코드를 직접 살펴보겠습니다.
<ext:Store runat="server" ID="storeUserInfo" PageSize="5" OnReadData="storeUserInfo_ReadData">
<Model>
<ext:Model ID="Model1" runat="server" IDProperty="Name" >
<Fields>
<ext:ModelField Name="Name" Type="String"></ext:ModelField>
<ext:ModelField Name="Gender" Type="String"></ext:ModelField>
<ext:ModelField Name="Age" Type="Int"></ext:ModelField>
</Fields>
</ext:Model>
</Model>
<Proxy>
<ext:PageProxy></ext:PageProxy>
</Proxy>
</ext:Store>
그리고 백그라운드 코드에서storeUserInfoReadData:
protected void storeUserInfo_ReadData(object sender, Ext.Net.StoreReadDataEventArgs e)
{
int start = e.Start;
int limit = e.Limit;
var userInfoList = UserInfo.GetData();
e.Total = userInfoList.Count;
storeUserInfo.DataSource = userInfoList.Skip(start).Take(limit).ToList();
storeUserInfo.DataBind();
}
정렬 및 필터링
위에서 언급한 바와 같이 서버 측은 Sort와 Filter 파라미터를 얻어서sort와 Filter를 처리하여 해당하는 데이터를 얻을 수 있다.
예를 들어 내 Filter 코드:
var userInfoList = UserInfo.GetData();
if (filter != null && filter.Count() > 0)
{
foreach (var item in filter)
{
userInfoList = userInfoList.FindAll(m => m.Name == item.Value);
}
}
이렇게 하면 모든 일치하는 옵션을 필터할 수 있다.Sort의 코드는 비교적 복잡해서 아직 비교적 통용되는 것이 완성되지 않았기 때문에 스팸 코드는 대중에게 해를 끼치지 않을 것이다.
본문은 이륙망원작에서 처음으로 발간하였으며, 전재는 출처를 밝혀 주십시오.
주소: http://www.qeefee.com/article/extnet-learn-09-store-in-extnet
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
React18을 사용해야 하는 좋은 이유: useSyncExternalStore간단한 ToDo를 생각해 봅시다. 이것은 당신의 동료가 휴가를 가기 전에 💩 당신에게 선물로 남긴 것입니다: index.js에는 다른 함수를 호출하는 구성 요소 간에 전달되는 구성 요소 내 함수가 엉망입니다. 그리고...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.