I create a small application in server side which performs same function like EnableHeaderContextMenu. And also i save the selected column name in Database, so that the next time the grid loads with the column which is saved in the database.Everything is done fine without ajax. But when I tried for ajax the column is not updated in the grid. Please help me in this reqard. I am using Master page for ajax.
main.aspx.cs:
Main.aspx:
GeneralGrid.cs:
Configure.aspx.cs:
Configure.aspx;
main.aspx.cs:
protected void Page_Load(object sender, EventArgs e) |
{ |
RadAjaxManager manager = RadAjaxManager.GetCurrent(Page); |
manager.AjaxRequest += new RadAjaxControl.AjaxRequestDelegate(manager_AjaxRequest); |
} |
protected void manager_AjaxRequest(object sender, AjaxRequestEventArgs e) |
{ |
if (e.Argument == "Rebind") |
{ |
RadGrid grid = pnlCompany.FindControl("radGvProspectList") as RadGrid; |
grid = objGrid.CreateGrid("GetProspect", "Prospect"); |
grid.Rebind(); |
} |
} |
protected void Page_Init(object sender, System.EventArgs e) |
{ |
radgrid = CreateGrid("GetProspect", "Prospect"); |
radgrid.ID = "radGvProspectList"; |
//radgrid.ItemCommand += new GridCommandEventHandler(radgrid_ItemCommand); |
//radgrid.SelectedIndexChanged += new EventHandler(radgrid_SelectedIndexChanged); |
pnlCompany.Controls.Add(radgrid); |
} |
<asp:Panel ID="pnlCompany" runat="server" Height="700px" Width="700px"> |
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> |
<script language="javascript"> |
function refreshGrid() |
{ |
$find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>").ajaxRequest("Rebind"); |
} |
</script> |
</telerik:RadCodeBlock> |
</asp:Panel> |
GeneralGrid.cs:
public class GridStructure:System.Web.UI.Page |
{ |
private DataTable dbsource; |
public void Set(DataTable dt) |
{ |
dbsource= dt; |
} |
public DataTable Get() |
{ |
return dbsource; |
} |
public RadGrid CreateGrid(string SPName,string PageName) |
{ |
GridConfig temp = new GridConfig(); |
SelectBL objSelectBL; |
DataTable dtLogin, dtGrid; |
// for sendind sql stored procedure's parameteres |
object[] arrSpParameters, parm; |
RadGrid objRadGrid = new RadGrid(); |
ArrayList colname = new ArrayList(); |
dtLogin = new DataTable(); |
dtGrid = new DataTable(); |
objSelectBL = new SelectBL(); |
arrSpParameters = new object[2]; |
arrSpParameters[0] = 21;// Session["UserID"]; |
arrSpParameters[1] = PageName; |
dtGrid = objSelectBL.Retrieve(SPName); |
string[] gridDataKeyNames = new string[dtGrid.Columns.Count]; |
int k = 0; |
foreach (DataColumn dc in dtGrid.Columns) |
{ |
colname.Add(dc.ColumnName.ToString()); |
gridDataKeyNames[k] = dc.ColumnName.ToString(); |
k++; |
} |
foreach (string column in colname) |
{ |
objRadGrid.MasterTableView.Columns.Add(CreateColumn(column)); |
} |
Session["ColumnName"] = colname; |
Session["PageName"] = PageName; |
objRadGrid.MasterTableView.DataKeyNames = gridDataKeyNames; |
objRadGrid.Skin = "Outlook"; |
objRadGrid.Width = Unit.Percentage(100); |
objRadGrid.AllowPaging = true; |
objRadGrid.AllowSorting = true; |
objRadGrid.PagerStyle.Mode = GridPagerMode.NextPrevNumericAndAdvanced; |
objRadGrid.AutoGenerateColumns = false; |
objRadGrid.ShowStatusBar = true; |
objRadGrid.MasterTableView.EnableColumnsViewState = false; |
objRadGrid.ClientSettings.Selecting.AllowRowSelect = true; |
objRadGrid.ClientSettings.EnablePostBackOnRowClick = true; |
objRadGrid.MasterTableView.PageSize = 19; |
objRadGrid.SelectedItemStyle.BackColor = System.Drawing.Color.AliceBlue; |
objRadGrid.MasterTableView.CommandItemDisplay = GridCommandItemDisplay.Top; |
objRadGrid.ItemCommand += new GridCommandEventHandler(objRadGrid_ItemCommand); |
objRadGrid.NeedDataSource += new GridNeedDataSourceEventHandler(objRadGrid_NeedDataSource); |
objRadGrid.PreRender += new EventHandler(objRadGrid_PreRender); |
objRadGrid.MasterTableView.CommandItemTemplate = temp; |
dbsource = dtGrid; |
return objRadGrid; |
} |
void objRadGrid_PreRender(object sender, EventArgs e) |
{ |
RadGrid objRadGrid = (RadGrid)sender; |
GridConfig temp = new GridConfig(); |
SelectBL objSelectBL; |
DataTable dtLogin, dtGrid; |
// for sendind sql stored procedure's parameteres |
object[] arrSpParameters, parm; |
ArrayList colname = new ArrayList(); |
dtLogin = new DataTable(); |
dtGrid = new DataTable(); |
objSelectBL = new SelectBL(); |
arrSpParameters = new object[2]; |
arrSpParameters[0] = 21;// Session["UserID"]; |
arrSpParameters[1] = "Prospect"; |
ArrayList result = new ArrayList(); |
dtLogin = objSelectBL.Retrieve("GetGridRights", arrSpParameters); |
if (dtLogin.Rows.Count > 0) |
{ |
string strContent = Convert.ToString(dtLogin.Rows[0][0]); |
if (strContent != string.Empty) |
{ |
string[] te = strContent.Split('#'); |
foreach (string sqe in te) |
{ |
result.Add(sqe); |
} |
} |
} |
Session["DiffColumn"] = result; |
foreach(GridColumn c in objRadGrid.Columns) |
{ |
if (result.Contains(c.HeaderText)) |
{ |
c.Display = false; |
} |
} |
} |
void objRadGrid_NeedDataSource(object source, GridNeedDataSourceEventArgs e) |
{ |
RadGrid objRadGrid = (RadGrid)source; |
objRadGrid.DataSource = dbsource; |
} |
void objRadGrid_ItemCommand(object source, GridCommandEventArgs e) |
{ |
RadGrid objRadGrid = (RadGrid)source; |
if (e.CommandName == "Configure") |
{ |
RadWindow objRadWindow = new RadWindow(); |
objRadWindow.OpenerElementID = objRadGrid.ClientID; |
objRadWindow.OffsetElementID = objRadGrid.ClientID; |
objRadWindow.VisibleOnPageLoad = true; |
objRadWindow.NavigateUrl = "~/Common Page/Configure.aspx"; |
objRadGrid.Controls.Add(objRadWindow); |
} |
} |
public GridBoundColumn CreateColumn(string column) |
{ |
GridBoundColumn boundColumn = new GridBoundColumn(); |
boundColumn.DataField = column; |
boundColumn.HeaderText = column; |
boundColumn.UniqueName = column; |
return boundColumn; |
} |
Configure.aspx.cs:
public partial class Configure : System.Web.UI.Page |
{ |
protected void Page_Load(object sender, EventArgs e) |
{ |
if (!Page.IsPostBack) |
{ |
ArrayList colum = (ArrayList)Session["ColumnName"]; |
foreach (string regionRow in colum) |
{ |
RadTreeNode regionNode = new RadTreeNode(regionRow); |
regionNode.Checked = true; |
RadTreeView1.Nodes.Add(regionNode); |
} |
RadTreeView1.CheckBoxes = true; |
ArrayList diffcolumn = (ArrayList)Session["DiffColumn"]; |
if (diffcolumn != null) |
{ |
foreach (string node in diffcolumn) |
{ |
RadTreeNode nodetext = RadTreeView1.FindNodeByText(node); |
nodetext.Checked = false; |
} |
} |
else { |
foreach (string node in colum) |
{ |
RadTreeNode nodetext = RadTreeView1.FindNodeByText(node); |
nodetext.Checked = true; |
} |
} |
} |
} |
protected void Button1_Click(object sender, EventArgs e) |
{ |
StringBuilder temp = new StringBuilder(); |
StringBuilder order = new StringBuilder(); |
CRUDActivitiesBL objInsert = new CRUDActivitiesBL(); |
object[] arrSpParameters = new object[3]; |
foreach (RadTreeNode node in RadTreeView1.GetAllNodes()) |
{ |
if (node.Checked == true) |
{ |
order.Append(node.Text.Trim()); |
order.Append("#"); |
} |
else |
{ |
temp.Append(node.Text.Trim()); |
temp.Append("#"); |
} |
} |
if (order.Length > 0) |
{ |
order.Remove(order.Length - 1, 1); |
} |
if (temp.Length > 0) |
{ |
temp.Remove(temp.Length - 1, 1); |
} |
arrSpParameters[0] = 21; |
arrSpParameters[1] = "Prospect"; |
arrSpParameters[2] = temp.ToString(); |
int result = CRUDActions("GetRights", arrSpParameters); |
ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind();", true); |
} |
protected void RadTreeNodeDrop(object sender, RadTreeNodeDragDropEventArgs e) |
{ |
RadTreeNode sourceNode = e.SourceDragNode; |
RadTreeNode destNode = e.DestDragNode; |
RadTreeViewDropPosition dropPosition = e.DropPosition; |
if (destNode != null)//drag&drop is performed between trees |
{ |
if (sourceNode.Equals(destNode) || sourceNode.IsAncestorOf(destNode)) |
{ |
return; |
} |
sourceNode.Owner.Nodes.Remove(sourceNode); |
switch (dropPosition) |
{ |
//case RadTreeViewDropPosition.Over: |
// // child |
// if (!sourceNode.IsAncestorOf(destNode)) |
// { |
// destNode.Nodes.Add(sourceNode); |
// } |
// break; |
case RadTreeViewDropPosition.Above: |
destNode.InsertBefore(sourceNode); |
break; |
case RadTreeViewDropPosition.Below: |
destNode.InsertAfter(sourceNode); |
break; |
} |
} |
} |
Configure.aspx;
<div> |
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> |
<script type="text/javascript"> |
function CloseAndRebind() |
{ |
GetRadWindow().Close(); |
GetRadWindow().BrowserWindow.refreshGrid(); |
} |
function GetRadWindow() |
{ |
var oWindow = null; |
if (window.radWindow) oWindow = window.radWindow; //Will work in Moz in all cases, including clasic dialog |
else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;//IE (and Moz az well) |
return oWindow; |
} |
</script> |
</telerik:RadCodeBlock> |
<asp:ScriptManager ID="ScriptManager1" runat="server"> |
</asp:ScriptManager> |
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> |
<telerik:RadTreeView ID="RadTreeView1" EnableDragAndDrop="true" EnableDragAndDropBetweenNodes="true" OnNodeDrop="RadTreeNodeDrop" runat="server"> |
</telerik:RadTreeView> |
</div> |