i have added rad gridboundcolumns at run time and gridbuttoncolumns at design time .I m able to perform paging and resizing of grid but not sorting and filtering.When i click on grid columns for sorting ,entire grid gets disappear,and filter is not working at all.
I tried to add only those columns at run time which are dynamic and the fixed columns at design time,in that case sorting and filtering was working in some of the fixed columns and some of the dynamic colums but not for all columns.After that i added all columns at run time including grid design and button columns,but not even a single function was working(i.e. paging,sorting,page resize,filtering and delete),so i kept button columns at design time and rest all at runtime,other functionality is proper but again sorting and filtering is not working in this case also,is there anything additional that has to be done for sorting and filtering while adding columns dynamically
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Data;
using System.Linq;
using log4net;
using Telerik.Web.UI;
using Kalitte.Dashboard.Framework;
using Kalitte.Dashboard.Framework.Types;
namespace abc.Web.UserControls.Patient.Management
{
public partial class ProcedureMaster : System.Web.UI.UserControl, IWidgetControl
{
#region Page Variables
//Flag that holds the value for redirection
bool NeedRedirection = false;
static ILog log = null;
WidgetInstance instance = null;
Kalitte.Dashboard.Framework.DashboardSurface dashboardSurface = null;
bool dynamicCol = false;
public bool CanView;
public bool CanAdd;
public bool CanEdit;
public bool CanDelete;
int UserId = BOL.Classes.EHRSessions.UserId;
public short AddEditWindowWidth
{
get
{
return ViewState["AddEditWindowWidth"] != null ? Convert.ToInt16(ViewState["AddEditWindowWidth"].ToString()) : (short)850;
}
set
{
ViewState["AddEditWindowWidth"] = value;
}
}
public short AddEditWindowHeight
{
get
{
return ViewState["AddEditWindowHeight"] != null ? Convert.ToInt16(ViewState["AddEditWindowHeight"].ToString()) : (short)620;
}
set
{
ViewState["AddEditWindowHeight"] = value;
}
}
#endregion
#region Page Events
protected void Page_Load(object sender, EventArgs e)
{
}
protected void rgdProcedureMaster_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
if (e.Item is GridFilteringItem)
{
if (hdnFilter.Value == "")
e.Item.Display = false;
}
else if (e.Item is GridDataItem)
{
GridDataItem item = (GridDataItem)e.Item;
ImageButton ibtn = null;
ibtn = (ImageButton)item["ibtnEdit"].Controls[0];
if (ibtn != null) ibtn.Attributes.Add("onclick", "javascript:openRadWindow('Patient/Management/ProcedureMaster.aspx?&Id=" + DataBinder.Eval(e.Item.DataItem, "Id") + "&CallBackID=" + btnReloadButton.ClientID + "', " + AddEditWindowWidth + "," + AddEditWindowHeight + ",'" + instance.Title + "');");
ibtn.AlternateText = Utility.ContentFetcher.GetResourceContent("RES_002", BOL.Classes.EHRSessions.Culture);
ibtn.ToolTip = Utility.ContentFetcher.GetResourceContent("RES_002", BOL.Classes.EHRSessions.Culture);
ibtn = (ImageButton)item["ibtnDelete"].Controls[0];
ibtn.AlternateText = Utility.ContentFetcher.GetResourceContent("RES_003", BOL.Classes.EHRSessions.Culture);
ibtn.ToolTip = Utility.ContentFetcher.GetResourceContent("RES_003", BOL.Classes.EHRSessions.Culture);
}
else if (e.Item is GridPagerItem && !(e.Item as GridPagerItem).IsTopPager)
rgdProcedureMaster.PagerStyle.AlwaysVisible = (rgdProcedureMaster.MasterTableView != null && rgdProcedureMaster.MasterTableView.DataSourceCount > 5);
}
protected void rgdProcedureMaster_ItemCommand(object sender, GridCommandEventArgs e)
{
if (NeedRedirection || WasSessionEnd()) return;
try
{
if (e.CommandName == "Page" || e.CommandName == "ChangePageSize" || e.CommandName == "Sort" || e.CommandName == "Filter")
{
LoadGridColumns();
ConfigForm();
LoadProcedureData();
}
else if (e.CommandName == "Delete")
{
GridDataItem item = (GridDataItem)e.Item;
string procedureIds = Convert.ToString(item.GetDataKeyValue("Id")) + ",";
Result result = abc.BLL.Master.Management.Procedures.DeleteProcedures(procedureIds, BOL.Classes.EHRSessions.ClinicId, BOL.Classes.EHRSessions.UserId, LanguageCulture.EN_US);
if (result.Status)
{
LoadGridColumns();
ConfigForm();
LoadProcedureData();
}
}
}
}
#endregion
#region Page Methods
private void LoadProcedureData()
{
Result result = abc.BLL.Master.Management.Procedures.GetProceduresList(0, BOL.Classes.EHRSessions.ClinicId, LanguageCulture.EN_US, DataFormat.DATASET);
DataTable dt = new DataTable();
dt.Columns.Add("Id");
dt.Columns.Add("ProcedureName");
for (int i = 0; i < result.Ds.Tables[0].Rows.Count; i++)
{
string pTypeId = "PT_"+result.Ds.Tables[0].Rows[i]["ProcedureTypeLookupId"].ToString();
bool isExist = false;
foreach (DataColumn col in dt.Columns)
{
if (pTypeId.Equals(col.ToString()))
isExist = true;
}
if (!isExist)
dt.Columns.Add(pTypeId);
}
dt.Columns.Add("RecordStatusLookupDisplayValue");
dt.Columns.Add("CT_1");
dt.Columns.Add("CTA_1");
for (int i = 0; i < result.Ds.Tables[0].Rows.Count; i++)
{
int tmpId = Convert.ToInt32(result.Ds.Tables[0].Rows[i]["Id"].ToString());
string pName = result.Ds.Tables[0].Rows[i]["ProcedureName"].ToString();
string dvalue = "PT_"+result.Ds.Tables[0].Rows[i]["ProcedureTypeLookupId"].ToString();
if (dt.Rows.Count == 0)
{
DataRow dr = dt.NewRow();
dr["Id"] = result.Ds.Tables[0].Rows[i]["Id"];
dr["ProcedureName"] = result.Ds.Tables[0].Rows[i]["ProcedureName"];
dr["RecordStatusLookupDisplayValue"] = result.Ds.Tables[0].Rows[i]["RecordStatusLookupDisplayValue"];
dr["CT_1"] = result.Ds.Tables[0].Rows[i]["CT_1"];
dr["CTA_1"] = result.Ds.Tables[0].Rows[i]["CTA_1"];
foreach (DataColumn dc in dt.Columns)
{
if (dvalue.Equals(dc.ColumnName.ToString()))
dr[dc.ColumnName] = "√";
}
dt.Rows.Add(dr);
}
else if (dt.Rows.Count > 0)
{
dt.DefaultView.RowFilter = "Id=" + tmpId;
if (dt.DefaultView.Count > 0)
{
foreach (DataColumn dc in dt.Columns)
{
if (dvalue.Equals(dc.ColumnName.ToString()))
dt.DefaultView[0][dc.ColumnName] = "√";
}
}
else
{
DataRow dr1 = dt.NewRow();
dr1["Id"] = result.Ds.Tables[0].Rows[i]["Id"];
dr1["ProcedureName"] = result.Ds.Tables[0].Rows[i]["ProcedureName"];
foreach (DataColumn dc in dt.Columns)
{
if (dvalue.Equals(dc.ColumnName.ToString()))
dr1[dc.ColumnName] = "√";
}
dr1["RecordStatusLookupDisplayValue"] = result.Ds.Tables[0].Rows[i]["RecordStatusLookupDisplayValue"];
dr1["CT_1"] = result.Ds.Tables[0].Rows[i]["CT_1"];
dr1["CTA_1"] = result.Ds.Tables[0].Rows[i]["CTA_1"];
dt.Rows.Add(dr1);
}
}
}
dt.DefaultView.RowFilter = "";
rgdProcedureMaster.DataSource = dt.DefaultView;
rgdProcedureMaster.DataBind();
bool needFilterAndSort = (dt.DefaultView != null && dt.DefaultView.Count > 0);
lnkFilter.Style.Add("display", (needFilterAndSort ? "''" : "none"));
//If filter not needed then reset the value in hdnFilter
if (!needFilterAndSort) hdnFilter.Value = string.Empty;
rgdProcedureMaster.AllowSorting = needFilterAndSort;
}
private void LoadGridColumns()
{
String lookupValues = LookupType.ProcedureType.ToString();
Result result = BLL.Master.LookupReference.GetLookupReferenceList(lookupValues, BOL.Classes.EHRSessions.ClinicId, (LanguageCulture)BOL.Classes.EHRSessions.CultureId, ResultFormat.ILIST);
BindDynamicColumns(result.LookupReferenceList, LookupType.ProcedureType.ToString());
}
private void BindDynamicColumns(IList<BOL.Master.LookupReference> iList, string lookUpType)
{
List<BOL.Master.LookupReference> results = iList.Where(d => d.LookupType == lookUpType).ToList();
GridBoundColumn gbc;
gbc = new GridBoundColumn();
gbc.HeaderText = "Custome Field 2";
gbc.DataField = "CTA_1";
gbc.SortExpression = "CTA_1";
gbc.UniqueName = "CTA_1";
gbc.AutoPostBackOnFilter = false;
gbc.CurrentFilterFunction = GridKnownFunction.Contains;
gbc.FilterListOptions = GridFilterListOptions.VaryByDataType;
gbc.ShowFilterIcon = true;
gbc.DataType = System.Type.GetType("System.String");
gbc.Visible = false;
rgdProcedureMaster.MasterTableView.Columns.AddAt(0, gbc);
gbc = new GridBoundColumn();
gbc.HeaderText = "Custome Field 1";
gbc.DataField = "CT_1";
gbc.SortExpression = "CT_1";
gbc.UniqueName = "CT_1";
gbc.AutoPostBackOnFilter = false;
gbc.CurrentFilterFunction = GridKnownFunction.Contains;
gbc.FilterListOptions = GridFilterListOptions.VaryByDataType;
gbc.ShowFilterIcon = true;
gbc.Visible = false;
rgdProcedureMaster.MasterTableView.Columns.AddAt(0, gbc);
gbc = new GridBoundColumn();
gbc.HeaderText = "Status";
gbc.DataField = "RecordStatusLookupDisplayValue";
gbc.SortExpression = "RecordStatusLookupDisplayValue";
gbc.UniqueName = "RecordStatusLookupDisplayValue";
gbc.AutoPostBackOnFilter = false;
gbc.CurrentFilterFunction = GridKnownFunction.Contains;
gbc.FilterListOptions = GridFilterListOptions.VaryByDataType;
gbc.ShowFilterIcon = true;
gbc.Visible = false;
rgdProcedureMaster.MasterTableView.Columns.AddAt(0, gbc);
for (int i = 0; i < results.Count; i++)
{
gbc = new GridBoundColumn();
gbc.HeaderText = results[i].DisplayValue;
gbc.DataField = "PT_" + results[i].Id.ToString();
gbc.SortExpression = "PT_" + results[i].Id.ToString();
gbc.UniqueName = "PT_" + results[i].Id.ToString();
gbc.AutoPostBackOnFilter = false;
gbc.CurrentFilterFunction = GridKnownFunction.Contains;
gbc.FilterListOptions = GridFilterListOptions.VaryByDataType;
gbc.ShowFilterIcon = true;
gbc.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
rgdProcedureMaster.MasterTableView.Columns.AddAt(0, gbc);
}
gbc = new GridBoundColumn();
gbc.HeaderText = "Procedure Name";
gbc.DataField = "ProcedureName";
gbc.SortExpression = "ProcedureName";
gbc.UniqueName = "ProcedureName";
gbc.AutoPostBackOnFilter = false;
gbc.CurrentFilterFunction = GridKnownFunction.Contains;
gbc.FilterListOptions = GridFilterListOptions.VaryByDataType;
gbc.ShowFilterIcon = true;
gbc.Visible = false;
rgdProcedureMaster.MasterTableView.Columns.AddAt(0, gbc);
}
#endregion
#region Widget Events
public void Bind(WidgetInstance instance)
{
if (NeedRedirection || WasSessionEnd()) return;
if (!instance.Hidden)
{
try
{
ViewState["instance"] = instance.InstanceKey;
LoadGridColumns();
if (rgdProcedureMaster != null && rgdProcedureMaster.MasterTableView.SortExpressions.Count == 0)
{
GridSortExpression sortExpression = new GridSortExpression();
sortExpression.FieldName = "ProcedureName";
sortExpression.SortOrder = GridSortOrder.Ascending;
//Add sort expression, which will sort against first column
rgdProcedureMaster.MasterTableView.SortExpressions.AddSortExpression(sortExpression);
}
ConfigForm();
ConfigResources();
LoadProcedureData();
}
catch (EHRExceptions ex)
{
System.Web.UI.ScriptManager.RegisterStartupScript(upProcedureMaster, upProcedureMaster.GetType(), "excAlert", "$(document).ready(function(){jAlert('" + Utility.ContentFetcher.GetValidationMessage("GREX_1", BOL.Classes.EHRSessions.Culture) + "');});", true);
Utility.MailSender.ExceptionLogger(log, ex.ErrorCode, BOL.Classes.EHRSessions.ClinicId, BOL.Classes.EHRSessions.UserId, ex.Message, ex.GetBaseException());
}
catch (Exception ex)
{
System.Web.UI.ScriptManager.RegisterStartupScript(upProcedureMaster, upProcedureMaster.GetType(), "excAlert", "$(document).ready(function(){jAlert('" + Utility.ContentFetcher.GetValidationMessage("GREX_1", BOL.Classes.EHRSessions.Culture) + "');});", true);
Utility.MailSender.ExceptionLogger(log, "abc.Web.UserControls.Patient.Management.ProcedureMaster:001 - Bind", BOL.Classes.EHRSessions.ClinicId, BOL.Classes.EHRSessions.UserId, ex.Message, ex);
}
}
}
public UpdatePanel[] Command(WidgetInstance instance, Kalitte.Dashboard.Framework.WidgetCommandInfo commandData, ref UpdateMode updateMode)
{
if (NeedRedirection || WasSessionEnd()) return null;
UpdatePanel[] upProcedure = null;
try
{
if (!instance.Hidden)
{
if (commandData.CommandName == "Reload" || commandData.CommandName == "refresh")
{
LoadGridColumns();
ConfigForm();
LoadProcedureData();
upProcedure = new UpdatePanel[] { upProcedureMaster };
}
}
}
catch (EHRExceptions ex)
{
System.Web.UI.ScriptManager.RegisterStartupScript(upProcedureMaster, upProcedureMaster.GetType(), "excAlert", "$(document).ready(function(){jAlert('" + Utility.ContentFetcher.GetValidationMessage("GREX_1", BOL.Classes.EHRSessions.Culture) + "');});", true);
Utility.MailSender.ExceptionLogger(log, ex.ErrorCode, BOL.Classes.EHRSessions.ClinicId, BOL.Classes.EHRSessions.UserId, ex.Message, ex.GetBaseException());
}
catch (Exception ex)
{
System.Web.UI.ScriptManager.RegisterStartupScript(upProcedureMaster, upProcedureMaster.GetType(), "excAlert", "$(document).ready(function(){jAlert('" + Utility.ContentFetcher.GetValidationMessage("GREX_1", BOL.Classes.EHRSessions.Culture) + "');});", true);
Utility.MailSender.ExceptionLogger(log, "abc.Web.UserControls.Patient.Management.ProcedureMaster:001 - Command", BOL.Classes.EHRSessions.ClinicId, BOL.Classes.EHRSessions.UserId, ex.Message, ex);
}
return upProcedure;
}
public void InitControl(Kalitte.Dashboard.Framework.WidgetInitParameters parameters)
{
if (NeedRedirection || WasSessionEnd()) return;
try
{
instance = parameters.Instance;
dashboardSurface = parameters.Surface;
}
catch (EHRExceptions ex)
{
System.Web.UI.ScriptManager.RegisterStartupScript(upProcedureMaster, upProcedureMaster.GetType(), "excAlert", "$(document).ready(function(){jAlert('" + Utility.ContentFetcher.GetValidationMessage("GREX_1", BOL.Classes.EHRSessions.Culture) + "');});", true);
Utility.MailSender.ExceptionLogger(log, ex.ErrorCode, BOL.Classes.EHRSessions.ClinicId, BOL.Classes.EHRSessions.UserId, ex.Message, ex.GetBaseException());
}
catch (Exception ex)
{
System.Web.UI.ScriptManager.RegisterStartupScript(upProcedureMaster, upProcedureMaster.GetType(), "excAlert", "$(document).ready(function(){jAlert('" + Utility.ContentFetcher.GetValidationMessage("GREX_1", BOL.Classes.EHRSessions.Culture) + "');});", true);
Utility.MailSender.ExceptionLogger(log, "abc.Web.UserControls.Patient.Management.ProcedureMaster:001 - InitControl", BOL.Classes.EHRSessions.ClinicId, BOL.Classes.EHRSessions.UserId, ex.Message, ex);
}
}
#endregion
}
}
Ascx.
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ProcedureMaster.ascx.cs"
Inherits="abc.Web.UserControls.Patient.Management.ProcedureMaster" %>
<asp:UpdatePanel ID="upProcedureMaster" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div id="<%= abc.BOL.FormDetails.ClinicManagement_ProcedureMaster.ToString() %>"
class="widget_container clearfix">
<!-- menu bar starts -->
<div class="wid_menu_bar clearfix">
<div class="right">
<div class="left">
<img src='<%=ResolveUrl("~/App_Themes/Bari_Default/images/wid_menubar_left.png") %>'
alt="Icon bar left image" /></div>
<div class="wid_icons left">
<ul>
<li><a id="lnkFilter" href="javascript:void(0);" runat="server">
<img id="imgFilter" src="~/App_Themes/Bari_Default/images/filter_ico.png" alt="Filter"
title="Filter" class="v_middle" runat="server" /> <asp:Label ID="lblFilter"
runat="server" Text="Filter"></asp:Label></a></li>
<li><a href="javascript:void(0);" id="lbtnPrint" runat="server">
<img id="imgPrint" src="~/App_Themes/Bari_Default/images/print_ico.png" alt="Print"
title="Print" class="v_middle" runat="server" /> <asp:Label ID="lblPrint" runat="server"
Text="Print"></asp:Label></a></li>
<li><a id="lnkProcedureMasterAdd" href="javascript:void(0);" runat="server" style="display: none">
<img id="imgAdd" src="~/App_Themes/Bari_Default/images/add_ico.png" alt="Add" title="Add"
class="v_middle" runat="server" /> <asp:Label ID="lblAdd" runat="server" Text="Add"></asp:Label></a></li>
</ul>
</div>
</div>
</div>
<!-- menu bar ends -->
<!-- widget content starts -->
<div id="pop_middle_Management_ProcedureMaster" class="wid_middle" runat="server">
<!-- Custom fields starts -->
<table class="table_container">
<tr>
<td class="pop_col_width">
<telerik:RadGrid ID="rgdProcedureMaster" runat="server" AllowPaging="True" GridLines="Vertical"
AutoGenerateColumns="False" EnableEmbeddedSkins="False" Skin="BariRC" AllowSorting="True"
AllowFilteringByColumn="True" PageSize="5" OnItemDataBound="rgdProcedureMaster_ItemDataBound"
CellSpacing="0" OnItemCommand="rgdProcedureMaster_ItemCommand" EnableViewState="True">
<GroupingSettings CaseSensitive="false" />
<SortingSettings EnableSkinSortStyles="false" />
<ClientSettings>
<ClientEvents OnFilterMenuShowing="FilterMenuShowing" />
</ClientSettings>
<MasterTableView DataKeyNames="Id" EnableColumnsViewState="False">
<Columns>
<telerik:GridButtonColumn UniqueName="ibtnEdit" HeaderText="Edit" ImageUrl="~/App_Themes/Bari_Default/images/edit_ico.png"
ButtonType="ImageButton" Visible="False" FilterImageToolTip="" />
<telerik:GridButtonColumn UniqueName="ibtnDelete" HeaderText="Delete" ImageUrl="~/App_Themes/Bari_Default/images/delete_ico.png"
ButtonType="ImageButton" Visible="False" CommandName="Delete" ConfirmDialogType="RadWindow"
FilterImageToolTip="" />
</Columns>
</MasterTableView>
<HeaderContextMenu CssClass="GridContextMenu GridContextMenu_BariRC" EnableEmbeddedSkins="False">
</HeaderContextMenu>
</telerik:RadGrid>
</td>
</tr>
</table>
</div>
<!-- widget content ends -->
</div>
<input id="hdnFilter" type="hidden" value="" runat="server" />
<div style="display: none">
<asp:Button ID="btnReloadButton" runat="server" Style="display: none" OnClick="btnReloadButton_Click" /></div>
</ContentTemplate>
</asp:UpdatePanel>