Hello,
I'm trying to do the RadGrid as is, in the example the following link: http://demos.telerik.com/aspnet-ajax/grid/examples/hierarchy/nestedviewtemplate/defaultcs.aspx,
and parts of binding within RadPageView are not getting visible, even while they datasources
met, could give me a help to resolve this issue, because the contents are not displayed in RadPageView. The following are the codes. Aspx and cs.
ASPX:
<%@ Page Title="" Language="C#" MasterPageFile="~/Protegidos/Administracao/GENTE_Adm.master"
AutoEventWireup="true" CodeFile="LogOperacao.aspx.cs" Inherits="Protegidos_Log_LogOperacao" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<asp:Content ID="Content1" ContentPlaceHolderID="cphSubConteudo" runat="Server">
<style type="text/css">
.viewWrap
{
padding: 15px;
background: #2291b5 0 0 url(Img/bluegradient.gif) repeat-x;
}
.contactWrap
{
padding: 10px 15px 15px 15px;
background: #fff;
color: #333;
}
.contactWrap td
{
padding: 0 20px 0 0;
}
.contactWrap td td
{
padding: 3px 20px 3px 0;
}
.contactWrap img
{
border: 1px solid #05679d;
}
</style>
<!-- content start -->
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="rgLogdado">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="rgLogdado" LoadingPanelID="RadAjaxLoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" />
<table width="99%" align="center">
<tr>
<td colspan="2">
<div class="Titulo01">
Administração</div>
<div class="Titulo02">
Log</div>
</td>
</tr>
<tr>
<td>
<table width="100%" align="right">
<tr id="trMensagem" runat="server" visible="false">
<td valign="middle" style="background-color: #FFFFAA; height: 25px; width: 100%">
<asp:Label ID="lblResultado" runat="server" Text="" Font-Names="Verdana" Font-Size="9"></asp:Label>
</td>
</tr>
<tr>
<td>
<div class="subTitulo_pagina">
Dados Log</div>
<div class="espaco">
</div>
</td>
</tr>
<tr>
<td>
<table class="textoCZ_12B" width="99%">
<tr>
<td style="width: 146px">
Código do Prestador
</td>
<td style="width: 180px">
<telerik:RadComboBox ID="rcbPrestador" runat="server">
</telerik:RadComboBox>
<asp:RequiredFieldValidator ID="rfvPrestador" runat="server" ControlToValidate="rcbPrestador"
ErrorMessage="*" InitialValue="-- Selecione --" Text="*" ValidationGroup="vgLog"></asp:RequiredFieldValidator>
</td>
  
<td style="width: 81px">
Usuário
</td>
<td style="width: 180px">
<telerik:RadComboBox ID="rcbUsuario" runat="server">
</telerik:RadComboBox>
<asp:RequiredFieldValidator ID="rfvUsuario" runat="server" ControlToValidate="rcbUsuario"
ErrorMessage="*" InitialValue="-- Selecione --" Text="*" ValidationGroup="vgLog"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td style="width: 146px">
Data Inicial
</td>
  
<td style="width: 117px">
<telerik:RadDatePicker ID="rdpDataAcaoInicio" runat="server" ShowPopupOnFocus="true"
MinDate="01/01/1850" MaxDate="01/01/3000">
<DateInput DateFormat="dd/MM/yyyy" EmptyMessage="dd/MM/aaaa">
</DateInput>
</telerik:RadDatePicker>
<asp:RequiredFieldValidator ID="rfvDataAcao" runat="server" ControlToValidate="rdpDataAcaoInicio"
ErrorMessage="*" Text="*" ValidationGroup="vgLog"></asp:RequiredFieldValidator>
</td>
<td style="width: 81px">
Data Inicial
</td>
  
<td>
<telerik:RadDatePicker ID="rdpDataAcaoFinal" runat="server" ShowPopupOnFocus="true"
MinDate="01/01/1850" MaxDate="01/01/3000">
<DateInput DateFormat="dd/MM/yyyy" EmptyMessage="dd/MM/aaaa">
</DateInput>
</telerik:RadDatePicker>
<asp:RequiredFieldValidator ID="rfvDataAcaoFinal" runat="server" ControlToValidate="rdpDataAcaoFinal"
ErrorMessage="*" Text="*" ValidationGroup="vgLog"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td style="width: 146px">
Tipo da Ação
</td>
<td colspan="3">
<telerik:RadComboBox ID="rcbTipoAcao" runat="server">
</telerik:RadComboBox>
<asp:RequiredFieldValidator ID="rfvTipoAcao" runat="server" ControlToValidate="rcbTipoAcao"
ErrorMessage="*" InitialValue="-- Selecione --" Text="*" ValidationGroup="vgLog"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td colspan="6" align="right">
<asp:Button ID="brnPesquisar" Text="Pesquisar" runat="server" OnClick="brnPesquisar_Click" />
<asp:HiddenField ID="hdnTipoDado" runat="server" />
<asp:HiddenField ID="hdnIdLog" runat="server" />
<br />
</td>
</tr>
<tr>
<td colspan="6">
<telerik:RadGrid ID="rgLogdado" runat="server" AllowPaging="True" Width="100%" Skin="Telerik"
OnPreRender="rgLogdado_PreRender" OnItemCreated="rgLogdado_ItemCreated" OnItemCommand="rgLogdado_ItemCommand"
AllowAutomaticInserts="false" ShowGroupPanel="true">
<PagerStyle Mode="NumericPages" />
<MasterTableView Width="100%" CommandItemDisplay="Top" PageSize="10" AutoGenerateColumns="false"
DataKeyNames="IdLog">
<Columns>
<telerik:GridBoundColumn UniqueName="IdLog" HeaderText="IdLog" DataField="IdLog"
Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="RazaSocialPatrocinador" HeaderText="Patrocinador"
DataField="RazaSocialPatrocinador" ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="RazaoSocialPrestador" HeaderText="Prestador"
DataField="RazaoSocialPrestador" ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Login" HeaderText="Usuário" DataField="Login"
ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left" HeaderStyle-Width="150px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="TipoAcao" HeaderText="Ação" DataField="TipoAcao"
ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left" HeaderStyle-Width="100px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="DataAcao" HeaderText="Data" DataField="DataAcao"
ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left" HeaderStyle-Width="100px">
</telerik:GridBoundColumn>
</Columns>
<NestedViewTemplate>
<asp:Panel ID="NestedViewPanel" runat="server" CssClass="viewWrap">
<div class="contactWrap">
<fieldset style="padding: 10px;">
<legend style="padding: 5px;"><b>Log de Operações</b> </legend>
<table>
<tr>
<td>
<telerik:RadTabStrip runat="server" ID="TabLog" MultiPageID="Multipage1" SelectedIndex="0">
<Tabs>
<telerik:RadTab runat="server" Text="Dados Anteriores" PageViewID="PageView1">
</telerik:RadTab>
<telerik:RadTab runat="server" Text="Dados Atuais" PageViewID="PageView2">
</telerik:RadTab>
<telerik:RadTab runat="server" Text="Detalhes do Log" PageViewID="PageView3">
</telerik:RadTab>
</Tabs>
</telerik:RadTabStrip>
<telerik:RadMultiPage runat="server" ID="Multipage1" SelectedIndex="0" RenderSelectedPageOnly="false">
<telerik:RadPageView runat="server" ID="PageViewDadosAnteriores">
<telerik:RadGrid runat="server" ID="rgAnterior" OnNeedDataSource="rgAnterior_NeedDataSource"
ShowFooter="true" AllowSorting="true" EnableLinqExpressions="false">
<MasterTableView ShowHeader="true" AutoGenerateColumns="true">
</MasterTableView>
</telerik:RadGrid>
</telerik:RadPageView>
<telerik:RadPageView ID="PageViewDadosAtuais" runat="server">
<telerik:RadGrid runat="server" ID="rgAtual" ShowFooter="true" AllowSorting="true"
EnableLinqExpressions="false" OnNeedDataSource="rgAtual_NeedDataSource">
<MasterTableView ShowHeader="true" AutoGenerateColumns="true">
</MasterTableView>
</telerik:RadGrid>
</telerik:RadPageView>
<telerik:RadPageView runat="server" ID="PageViewDetalhes">
</telerik:RadPageView>
</telerik:RadMultiPage>
</td>
</tr>
</table>
</fieldset>
</div>
</asp:Panel>
</NestedViewTemplate>
</MasterTableView>
</telerik:RadGrid>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</asp:Content>
CS:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SMA.Log;
using SMA.Seguranca.DadosV2;
using SMA.GENTEv1;
using System.Data;
using System.Xml;
using System.IO;
using System.Text;
using System.Xml.Linq;
using SMA.Core;
using Telerik.Web.UI;
public partial class Protegidos_Log_LogOperacao : PageBase
{
private LogOPeration logOperation;
private List<LogOPeration> listLogOperation;
private SMA.Seguranca.Usuario usuario;
private Organizacao organizacao;
private DataSet dsDadoAnterior;
private DataTable dtDadoAnterior;
private DataSet dsDadoAtual;
private DataTable dtDadoAtual;
private XElement xElementParse;
private SMAXmlBuilder smaXmlBuilder;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
CarregarPrestador();
CarregarUsuario();
CarregarTipoAcao();
}
}
private void CarregarTipoAcao()
{
SMA.Log.TipoAcao tipoAcao = new SMA.Log.TipoAcao();
Util.BindDropDownlist(tipoAcao.SelectAll(), "descricao", "IdTipoAcao", true, ref rcbTipoAcao);
}
private void CarregarPrestador()
{
organizacao = new Organizacao();
organizacao.IdOrganizacao = IdPatrocinador;
Util.BindDropDownlist(organizacao.SelectPatrocinadorPrestador(), "RazaoSocial", "IdOrganizacao", true, ref this.rcbPrestador);
}
private void CarregarUsuario()
{
usuario = new SMA.Seguranca.Usuario();
Util.BindDropDownlist(usuario.SelectAll(), "Login", "IdUsuario", true, ref this.rcbUsuario);
}
protected void brnPesquisar_Click(object sender, EventArgs e)
{
Page.Validate("vgLog");
if (Page.IsValid)
{
SelecionarLog();
}
}
private void SelecionarLog()
{
DateTime? dataOPeracao;
logOperation = new LogOPeration();
logOperation.IdPrestador = Convert.ToInt32(this.rcbPrestador.SelectedValue);
logOperation.IdUsuario = Convert.ToInt32(this.rcbUsuario.SelectedValue);
logOperation.IdTipoAcao = Convert.ToInt32(this.rcbTipoAcao.SelectedValue);
dataOPeracao = this.rdpDataAcaoInicio.SelectedDate;
logOperation.DataAcaoInicio = dataOPeracao.Value;
dataOPeracao = this.rdpDataAcaoFinal.SelectedDate;
logOperation.DataAcaoFinal = dataOPeracao.Value;
listLogOperation = logOperation.SelectLog();
logOperation.Dispose();
rgLogdado.DataSource = listLogOperation;
rgLogdado.DataBind();
}
protected void rgLogdado_PreRender(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.rgLogdado.MasterTableView.Rebind();
}
foreach (GridCommandItem cmditm in rgLogdado.MasterTableView.GetItems(GridItemType.CommandItem))
{
if (rgLogdado.Items.Count > 0)
{
Button btn1 = (Button)cmditm.FindControl("AddNewRecordButton");
btn1.Visible = false;
LinkButton lnkbtn1 = (LinkButton)cmditm.FindControl("InitInsertButton");
lnkbtn1.Visible = false;
}
}
}
/// <summary>
/// Pegar dados xml do log
/// </summary>
/// <param name="idLog">Código do log</param>
/// <param name="tipoDado">Tipo de Dado -> 1= Dado Atual, 2 -> Dado Anterior</param>
/// <returns>Dataset contendo os dados do xml</returns>
private DataSet GetDataTableFromXml(int idLog, int tipoDado)
{
List<LogOPeration> listLogSelected;
DataSet returnData = null;
logOperation = new LogOPeration();
logOperation.IdLog = idLog;
listLogSelected = logOperation.SelectLogById();
if (listLogSelected != null)
{
if (listLogSelected.Count > 0)
{
switch (tipoDado)
{
case 1:
{
if (!string.IsNullOrEmpty(listLogSelected[0].DadoAtual))
{
dsDadoAtual = new DataSet();
dtDadoAtual = new DataTable();
xElementParse = XElement.Parse(listLogSelected[0].DadoAtual, LoadOptions.None);
smaXmlBuilder = new SMAXmlBuilder();
dtDadoAtual = smaXmlBuilder.XElementToDataTable(xElementParse);
dsDadoAtual.Tables.Add(dtDadoAtual);
}
else
dsDadoAtual = new DataSet();
returnData = dsDadoAtual;
}
break;
case 2:
{
if (!string.IsNullOrEmpty(listLogSelected[0].DadoAnterior))
{
dsDadoAnterior = new DataSet();
dtDadoAnterior = new DataTable();
xElementParse = XElement.Parse(listLogSelected[0].DadoAnterior, LoadOptions.None);
smaXmlBuilder = new SMAXmlBuilder();
dtDadoAnterior = smaXmlBuilder.XElementToDataTable(xElementParse);
dsDadoAnterior.Tables.Add(dtDadoAnterior);
}
else
dsDadoAnterior = new DataSet();
returnData = dsDadoAnterior;
}
break;
}
}
}
return returnData;
}
protected void rgLogdado_ItemCreated(object sender, GridItemEventArgs e)
{
if (e.Item is GridNestedViewItem)
{
//e.Item.FindControl("InnerContainer").Visible = ((GridNestedViewItem)e.Item).ParentItem.Expanded;
}
}
protected void rgLogdado_ItemCommand(object source, GridCommandEventArgs e)
{
DataSet dsBind = null;
if (e.CommandName == RadGrid.ExpandCollapseCommandName)
{
this.hdnIdLog.Value = ((GridDataItem)e.Item).Cells[2].Text;
Panel panelItems = (Panel)((GridDataItem)e.Item).ChildItem.FindControl("NestedViewPanel");
if (panelItems != null)
{
panelItems.Visible = true;
//!e.Item.Expanded;
}
//((GridDataItem)e.Item).ChildItem.FindControl("NestedViewPanel").Visible = true;
//!e.Item.Expanded;
//Preencher grid de dados anteriores
RadGrid rgDadoAnterior = (RadGrid)((GridDataItem)e.Item).ChildItem.FindControl("NestedViewPanel").FindControl("rgAnterior");
if (rgDadoAnterior != null)
{
if (!string.IsNullOrEmpty(((GridDataItem)e.Item).Cells[2].Text))
{
dsBind = GetDataTableFromXml(Convert.ToInt32(((GridDataItem)e.Item).Cells[2].Text), 2);
if (dsBind != null)
{
if (dsBind.Tables.Count > 0)
{
rgDadoAnterior.MasterTableView.DataSource = dsBind;
rgDadoAnterior.DataBind();
}
}
}
}
//Prencher dados atuais
RadGrid rgDadoAtual = (RadGrid)((GridDataItem)e.Item).ChildItem.FindControl("NestedViewPanel").FindControl("rgAtual");
if (rgDadoAtual != null)
{
if (!string.IsNullOrEmpty(((GridDataItem)e.Item).Cells[2].Text))
{
dsBind = GetDataTableFromXml(Convert.ToInt32(((GridDataItem)e.Item).Cells[2].Text), 1);
if (dsBind != null)
{
if (dsBind.Tables.Count > 0)
{
rgDadoAtual.MasterTableView.DataSource = dsBind;
rgDadoAtual.DataBind();
}
}
}
}
}
}
protected void rgAnterior_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
RadGrid rgLogAnterior = null;
if (!e.IsFromDetailTable)
{
if (!string.IsNullOrEmpty(this.hdnIdLog.Value))
{
rgLogAnterior = (RadGrid)this.rgLogdado.FindControl("NestedViewPanel").FindControl("rgAnterior");
if (rgLogAnterior != null)
{
rgLogAnterior.DataBind();
}
}
}
}
protected void rgAtual_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
RadGrid rgLogAtual = null;
if (!e.IsFromDetailTable)
{
if (!string.IsNullOrEmpty(this.hdnIdLog.Value))
{
rgLogAtual = (RadGrid)this.rgLogdado.FindControl("NestedViewPanel").FindControl("rgAtual");
if (rgLogAtual != null)
{
rgLogAtual.DataBind();
}
}
}
}
}
Thanks,
Ivan Souza.
I'm trying to do the RadGrid as is, in the example the following link: http://demos.telerik.com/aspnet-ajax/grid/examples/hierarchy/nestedviewtemplate/defaultcs.aspx,
and parts of binding within RadPageView are not getting visible, even while they datasources
met, could give me a help to resolve this issue, because the contents are not displayed in RadPageView. The following are the codes. Aspx and cs.
ASPX:
<%@ Page Title="" Language="C#" MasterPageFile="~/Protegidos/Administracao/GENTE_Adm.master"
AutoEventWireup="true" CodeFile="LogOperacao.aspx.cs" Inherits="Protegidos_Log_LogOperacao" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<asp:Content ID="Content1" ContentPlaceHolderID="cphSubConteudo" runat="Server">
<style type="text/css">
.viewWrap
{
padding: 15px;
background: #2291b5 0 0 url(Img/bluegradient.gif) repeat-x;
}
.contactWrap
{
padding: 10px 15px 15px 15px;
background: #fff;
color: #333;
}
.contactWrap td
{
padding: 0 20px 0 0;
}
.contactWrap td td
{
padding: 3px 20px 3px 0;
}
.contactWrap img
{
border: 1px solid #05679d;
}
</style>
<!-- content start -->
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="rgLogdado">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="rgLogdado" LoadingPanelID="RadAjaxLoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" />
<table width="99%" align="center">
<tr>
<td colspan="2">
<div class="Titulo01">
Administração</div>
<div class="Titulo02">
Log</div>
</td>
</tr>
<tr>
<td>
<table width="100%" align="right">
<tr id="trMensagem" runat="server" visible="false">
<td valign="middle" style="background-color: #FFFFAA; height: 25px; width: 100%">
<asp:Label ID="lblResultado" runat="server" Text="" Font-Names="Verdana" Font-Size="9"></asp:Label>
</td>
</tr>
<tr>
<td>
<div class="subTitulo_pagina">
Dados Log</div>
<div class="espaco">
</div>
</td>
</tr>
<tr>
<td>
<table class="textoCZ_12B" width="99%">
<tr>
<td style="width: 146px">
Código do Prestador
</td>
<td style="width: 180px">
<telerik:RadComboBox ID="rcbPrestador" runat="server">
</telerik:RadComboBox>
<asp:RequiredFieldValidator ID="rfvPrestador" runat="server" ControlToValidate="rcbPrestador"
ErrorMessage="*" InitialValue="-- Selecione --" Text="*" ValidationGroup="vgLog"></asp:RequiredFieldValidator>
</td>
  
<td style="width: 81px">
Usuário
</td>
<td style="width: 180px">
<telerik:RadComboBox ID="rcbUsuario" runat="server">
</telerik:RadComboBox>
<asp:RequiredFieldValidator ID="rfvUsuario" runat="server" ControlToValidate="rcbUsuario"
ErrorMessage="*" InitialValue="-- Selecione --" Text="*" ValidationGroup="vgLog"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td style="width: 146px">
Data Inicial
</td>
  
<td style="width: 117px">
<telerik:RadDatePicker ID="rdpDataAcaoInicio" runat="server" ShowPopupOnFocus="true"
MinDate="01/01/1850" MaxDate="01/01/3000">
<DateInput DateFormat="dd/MM/yyyy" EmptyMessage="dd/MM/aaaa">
</DateInput>
</telerik:RadDatePicker>
<asp:RequiredFieldValidator ID="rfvDataAcao" runat="server" ControlToValidate="rdpDataAcaoInicio"
ErrorMessage="*" Text="*" ValidationGroup="vgLog"></asp:RequiredFieldValidator>
</td>
<td style="width: 81px">
Data Inicial
</td>
  
<td>
<telerik:RadDatePicker ID="rdpDataAcaoFinal" runat="server" ShowPopupOnFocus="true"
MinDate="01/01/1850" MaxDate="01/01/3000">
<DateInput DateFormat="dd/MM/yyyy" EmptyMessage="dd/MM/aaaa">
</DateInput>
</telerik:RadDatePicker>
<asp:RequiredFieldValidator ID="rfvDataAcaoFinal" runat="server" ControlToValidate="rdpDataAcaoFinal"
ErrorMessage="*" Text="*" ValidationGroup="vgLog"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td style="width: 146px">
Tipo da Ação
</td>
<td colspan="3">
<telerik:RadComboBox ID="rcbTipoAcao" runat="server">
</telerik:RadComboBox>
<asp:RequiredFieldValidator ID="rfvTipoAcao" runat="server" ControlToValidate="rcbTipoAcao"
ErrorMessage="*" InitialValue="-- Selecione --" Text="*" ValidationGroup="vgLog"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td colspan="6" align="right">
<asp:Button ID="brnPesquisar" Text="Pesquisar" runat="server" OnClick="brnPesquisar_Click" />
<asp:HiddenField ID="hdnTipoDado" runat="server" />
<asp:HiddenField ID="hdnIdLog" runat="server" />
<br />
</td>
</tr>
<tr>
<td colspan="6">
<telerik:RadGrid ID="rgLogdado" runat="server" AllowPaging="True" Width="100%" Skin="Telerik"
OnPreRender="rgLogdado_PreRender" OnItemCreated="rgLogdado_ItemCreated" OnItemCommand="rgLogdado_ItemCommand"
AllowAutomaticInserts="false" ShowGroupPanel="true">
<PagerStyle Mode="NumericPages" />
<MasterTableView Width="100%" CommandItemDisplay="Top" PageSize="10" AutoGenerateColumns="false"
DataKeyNames="IdLog">
<Columns>
<telerik:GridBoundColumn UniqueName="IdLog" HeaderText="IdLog" DataField="IdLog"
Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="RazaSocialPatrocinador" HeaderText="Patrocinador"
DataField="RazaSocialPatrocinador" ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="RazaoSocialPrestador" HeaderText="Prestador"
DataField="RazaoSocialPrestador" ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="Login" HeaderText="Usuário" DataField="Login"
ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left" HeaderStyle-Width="150px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="TipoAcao" HeaderText="Ação" DataField="TipoAcao"
ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left" HeaderStyle-Width="100px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="DataAcao" HeaderText="Data" DataField="DataAcao"
ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left" HeaderStyle-Width="100px">
</telerik:GridBoundColumn>
</Columns>
<NestedViewTemplate>
<asp:Panel ID="NestedViewPanel" runat="server" CssClass="viewWrap">
<div class="contactWrap">
<fieldset style="padding: 10px;">
<legend style="padding: 5px;"><b>Log de Operações</b> </legend>
<table>
<tr>
<td>
<telerik:RadTabStrip runat="server" ID="TabLog" MultiPageID="Multipage1" SelectedIndex="0">
<Tabs>
<telerik:RadTab runat="server" Text="Dados Anteriores" PageViewID="PageView1">
</telerik:RadTab>
<telerik:RadTab runat="server" Text="Dados Atuais" PageViewID="PageView2">
</telerik:RadTab>
<telerik:RadTab runat="server" Text="Detalhes do Log" PageViewID="PageView3">
</telerik:RadTab>
</Tabs>
</telerik:RadTabStrip>
<telerik:RadMultiPage runat="server" ID="Multipage1" SelectedIndex="0" RenderSelectedPageOnly="false">
<telerik:RadPageView runat="server" ID="PageViewDadosAnteriores">
<telerik:RadGrid runat="server" ID="rgAnterior" OnNeedDataSource="rgAnterior_NeedDataSource"
ShowFooter="true" AllowSorting="true" EnableLinqExpressions="false">
<MasterTableView ShowHeader="true" AutoGenerateColumns="true">
</MasterTableView>
</telerik:RadGrid>
</telerik:RadPageView>
<telerik:RadPageView ID="PageViewDadosAtuais" runat="server">
<telerik:RadGrid runat="server" ID="rgAtual" ShowFooter="true" AllowSorting="true"
EnableLinqExpressions="false" OnNeedDataSource="rgAtual_NeedDataSource">
<MasterTableView ShowHeader="true" AutoGenerateColumns="true">
</MasterTableView>
</telerik:RadGrid>
</telerik:RadPageView>
<telerik:RadPageView runat="server" ID="PageViewDetalhes">
</telerik:RadPageView>
</telerik:RadMultiPage>
</td>
</tr>
</table>
</fieldset>
</div>
</asp:Panel>
</NestedViewTemplate>
</MasterTableView>
</telerik:RadGrid>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</asp:Content>
CS:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SMA.Log;
using SMA.Seguranca.DadosV2;
using SMA.GENTEv1;
using System.Data;
using System.Xml;
using System.IO;
using System.Text;
using System.Xml.Linq;
using SMA.Core;
using Telerik.Web.UI;
public partial class Protegidos_Log_LogOperacao : PageBase
{
private LogOPeration logOperation;
private List<LogOPeration> listLogOperation;
private SMA.Seguranca.Usuario usuario;
private Organizacao organizacao;
private DataSet dsDadoAnterior;
private DataTable dtDadoAnterior;
private DataSet dsDadoAtual;
private DataTable dtDadoAtual;
private XElement xElementParse;
private SMAXmlBuilder smaXmlBuilder;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
CarregarPrestador();
CarregarUsuario();
CarregarTipoAcao();
}
}
private void CarregarTipoAcao()
{
SMA.Log.TipoAcao tipoAcao = new SMA.Log.TipoAcao();
Util.BindDropDownlist(tipoAcao.SelectAll(), "descricao", "IdTipoAcao", true, ref rcbTipoAcao);
}
private void CarregarPrestador()
{
organizacao = new Organizacao();
organizacao.IdOrganizacao = IdPatrocinador;
Util.BindDropDownlist(organizacao.SelectPatrocinadorPrestador(), "RazaoSocial", "IdOrganizacao", true, ref this.rcbPrestador);
}
private void CarregarUsuario()
{
usuario = new SMA.Seguranca.Usuario();
Util.BindDropDownlist(usuario.SelectAll(), "Login", "IdUsuario", true, ref this.rcbUsuario);
}
protected void brnPesquisar_Click(object sender, EventArgs e)
{
Page.Validate("vgLog");
if (Page.IsValid)
{
SelecionarLog();
}
}
private void SelecionarLog()
{
DateTime? dataOPeracao;
logOperation = new LogOPeration();
logOperation.IdPrestador = Convert.ToInt32(this.rcbPrestador.SelectedValue);
logOperation.IdUsuario = Convert.ToInt32(this.rcbUsuario.SelectedValue);
logOperation.IdTipoAcao = Convert.ToInt32(this.rcbTipoAcao.SelectedValue);
dataOPeracao = this.rdpDataAcaoInicio.SelectedDate;
logOperation.DataAcaoInicio = dataOPeracao.Value;
dataOPeracao = this.rdpDataAcaoFinal.SelectedDate;
logOperation.DataAcaoFinal = dataOPeracao.Value;
listLogOperation = logOperation.SelectLog();
logOperation.Dispose();
rgLogdado.DataSource = listLogOperation;
rgLogdado.DataBind();
}
protected void rgLogdado_PreRender(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.rgLogdado.MasterTableView.Rebind();
}
foreach (GridCommandItem cmditm in rgLogdado.MasterTableView.GetItems(GridItemType.CommandItem))
{
if (rgLogdado.Items.Count > 0)
{
Button btn1 = (Button)cmditm.FindControl("AddNewRecordButton");
btn1.Visible = false;
LinkButton lnkbtn1 = (LinkButton)cmditm.FindControl("InitInsertButton");
lnkbtn1.Visible = false;
}
}
}
/// <summary>
/// Pegar dados xml do log
/// </summary>
/// <param name="idLog">Código do log</param>
/// <param name="tipoDado">Tipo de Dado -> 1= Dado Atual, 2 -> Dado Anterior</param>
/// <returns>Dataset contendo os dados do xml</returns>
private DataSet GetDataTableFromXml(int idLog, int tipoDado)
{
List<LogOPeration> listLogSelected;
DataSet returnData = null;
logOperation = new LogOPeration();
logOperation.IdLog = idLog;
listLogSelected = logOperation.SelectLogById();
if (listLogSelected != null)
{
if (listLogSelected.Count > 0)
{
switch (tipoDado)
{
case 1:
{
if (!string.IsNullOrEmpty(listLogSelected[0].DadoAtual))
{
dsDadoAtual = new DataSet();
dtDadoAtual = new DataTable();
xElementParse = XElement.Parse(listLogSelected[0].DadoAtual, LoadOptions.None);
smaXmlBuilder = new SMAXmlBuilder();
dtDadoAtual = smaXmlBuilder.XElementToDataTable(xElementParse);
dsDadoAtual.Tables.Add(dtDadoAtual);
}
else
dsDadoAtual = new DataSet();
returnData = dsDadoAtual;
}
break;
case 2:
{
if (!string.IsNullOrEmpty(listLogSelected[0].DadoAnterior))
{
dsDadoAnterior = new DataSet();
dtDadoAnterior = new DataTable();
xElementParse = XElement.Parse(listLogSelected[0].DadoAnterior, LoadOptions.None);
smaXmlBuilder = new SMAXmlBuilder();
dtDadoAnterior = smaXmlBuilder.XElementToDataTable(xElementParse);
dsDadoAnterior.Tables.Add(dtDadoAnterior);
}
else
dsDadoAnterior = new DataSet();
returnData = dsDadoAnterior;
}
break;
}
}
}
return returnData;
}
protected void rgLogdado_ItemCreated(object sender, GridItemEventArgs e)
{
if (e.Item is GridNestedViewItem)
{
//e.Item.FindControl("InnerContainer").Visible = ((GridNestedViewItem)e.Item).ParentItem.Expanded;
}
}
protected void rgLogdado_ItemCommand(object source, GridCommandEventArgs e)
{
DataSet dsBind = null;
if (e.CommandName == RadGrid.ExpandCollapseCommandName)
{
this.hdnIdLog.Value = ((GridDataItem)e.Item).Cells[2].Text;
Panel panelItems = (Panel)((GridDataItem)e.Item).ChildItem.FindControl("NestedViewPanel");
if (panelItems != null)
{
panelItems.Visible = true;
//!e.Item.Expanded;
}
//((GridDataItem)e.Item).ChildItem.FindControl("NestedViewPanel").Visible = true;
//!e.Item.Expanded;
//Preencher grid de dados anteriores
RadGrid rgDadoAnterior = (RadGrid)((GridDataItem)e.Item).ChildItem.FindControl("NestedViewPanel").FindControl("rgAnterior");
if (rgDadoAnterior != null)
{
if (!string.IsNullOrEmpty(((GridDataItem)e.Item).Cells[2].Text))
{
dsBind = GetDataTableFromXml(Convert.ToInt32(((GridDataItem)e.Item).Cells[2].Text), 2);
if (dsBind != null)
{
if (dsBind.Tables.Count > 0)
{
rgDadoAnterior.MasterTableView.DataSource = dsBind;
rgDadoAnterior.DataBind();
}
}
}
}
//Prencher dados atuais
RadGrid rgDadoAtual = (RadGrid)((GridDataItem)e.Item).ChildItem.FindControl("NestedViewPanel").FindControl("rgAtual");
if (rgDadoAtual != null)
{
if (!string.IsNullOrEmpty(((GridDataItem)e.Item).Cells[2].Text))
{
dsBind = GetDataTableFromXml(Convert.ToInt32(((GridDataItem)e.Item).Cells[2].Text), 1);
if (dsBind != null)
{
if (dsBind.Tables.Count > 0)
{
rgDadoAtual.MasterTableView.DataSource = dsBind;
rgDadoAtual.DataBind();
}
}
}
}
}
}
protected void rgAnterior_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
RadGrid rgLogAnterior = null;
if (!e.IsFromDetailTable)
{
if (!string.IsNullOrEmpty(this.hdnIdLog.Value))
{
rgLogAnterior = (RadGrid)this.rgLogdado.FindControl("NestedViewPanel").FindControl("rgAnterior");
if (rgLogAnterior != null)
{
rgLogAnterior.DataBind();
}
}
}
}
protected void rgAtual_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
RadGrid rgLogAtual = null;
if (!e.IsFromDetailTable)
{
if (!string.IsNullOrEmpty(this.hdnIdLog.Value))
{
rgLogAtual = (RadGrid)this.rgLogdado.FindControl("NestedViewPanel").FindControl("rgAtual");
if (rgLogAtual != null)
{
rgLogAtual.DataBind();
}
}
}
}
}
Thanks,
Ivan Souza.