Aug 06, 2011, 5:48 PM
[CLOSED] Remote paging with handler.
Hi guys,
After adding the handler, my grid don't render the rows.
Code:
Inicial.cs
Thanks!!!
After adding the handler, my grid don't render the rows.
Code:
Inicial.cs
public void MontaColunasGrid(List<documento> documentos, string nomeTipoDocumento)
{
DataTable dtDocumentos = new DataTable();
Store StoreDocumento = Componentes.CriarStore("StoreDocumento");
Ext.Net.GridPanel gridPanel = Componentes.CriarGridPanel(StoreDocumento, DateTime.Now.Millisecond, "Documento");
//gridPanel.Listeners.RowContextMenu.Handler = "e.preventDefault(); #{" + this.RowContextMenu.ID + "}.dataRecord = this.store.getAt(rowIndex);#{" + this.RowContextMenu.ID + "}.showAt(e.getXY()); this.getSelectionModel().selectRow(rowIndex);";
dtDocumentos.Columns.Add("id");
AdicionarField(StoreDocumento, new RecordField("id"));
dtDocumentos.Columns.Add("nome");
AdicionarField(StoreDocumento, new RecordField("nome"));
using (ServicoECMClient proxy = new ServicoECMClient())
{
foreach (var doc in documentos)
{
foreach (var documentoIndice in doc.documento_indice)
{
indice indice = proxy.ObterIndiceId(documentoIndice.id_indice);
if (!dtDocumentos.Columns.Contains(indice.nome))
{
this.AdicionarField(StoreDocumento,new RecordField(indice.nome));
dtDocumentos.Columns.Add(new DataColumn(indice.nome) { ColumnName = indice.nome });
gridPanel.ColumnModel.Columns.Add(new Column { DataIndex = indice.nome, Header = indice.nome });
}
}
}
}
foreach (var doc in documentos)
{
int i = 2;
DataRow row = dtDocumentos.NewRow();
row[0] = doc.id;
row[1] = doc.nome;
foreach (var item in doc.documento_indice)
{
row[i] = item.valor;
i++;
}
dtDocumentos.Rows.Add(row);
}
StoreDocumento.DataSource = dtDocumentos;
StoreDocumento.DataBind();
Ext.Net.Panel tabPanel = Componentes.CriarTabPanel(2, nomeTipoDocumento);
TabPanelGeral.Add(tabPanel);
tabPanel.Add(gridPanel);
tabPanel.Render();
gridPanel.Render();
TabPanelGeral.SetActiveTab(tabPanel);
}
Componentes.cspublic static Store CriarStore(string ID)
{
HttpProxy httpProxy = new HttpProxy();
httpProxy.Url = "PaginacaoHandler.ashx";
Ext.Net.JsonReader jsonReader = new Ext.Net.JsonReader();
jsonReader.TotalProperty = "total";
jsonReader.Root = "rows";
Store store = new Store();
store.ID = ID;
store.AutoLoad = false;
store.RemotePaging = true;
store.Proxy.Add(httpProxy);
store.Reader.Add(jsonReader);
return store;
}
Handlerpublic class PaginacaoHandler : StoqueECMWeb.Inicial, IHttpHandler, IReadOnlySessionState
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/json";
List<documento> documentos = null;
string strJsonBusca = (string)context.Session["jsonBusca"];
string nomeTipoDocumento = "";
int inicio = 0;
int limite = 10;
int total = 0;
if (!string.IsNullOrEmpty(context.Request["start"]))
{
inicio = int.Parse(context.Request["start"]);
}
if (!string.IsNullOrEmpty(context.Request["limit"]))
{
limite = int.Parse(context.Request["limit"]);
}
try
{
if (String.IsNullOrEmpty(strJsonBusca))
return;
DocumentoBusca documentoBusca = JsonConvert.DeserializeObject<DocumentoBusca>(strJsonBusca);
strJsonBusca = JSON.Serialize(documentoBusca);
using (ServicoECMClient proxy = new ServicoECMClient())
{
documentos = proxy.BuscarDocumento(out total, strJsonBusca).ToList();
tipodocumento tipoDocumento = proxy.ObterTipoDocumento(documentoBusca.TipoDocumentoBusca[0]);
nomeTipoDocumento = tipoDocumento.nome;
}
if (documentos.Count > 0)
{
this.MontaColunasGrid(documentos, nomeTipoDocumento);
}
}
catch { }
context.Response.Write(string.Format("{{total:{1},'rows':{0}}}", Ext.Net.JSON.Serialize(documentos), total));
}
}
Any suggestion?Thanks!!!
Last edited by Daniil; Aug 16, 2011 at 8:58 AM.
Reason: [CLOSED]