Hi
Please bear with me I'm quite new to Teleik. My scenario is I have a RadGrid which is built completely in C# code because the columns can vary. Each data bound field is either a link button or a label. For the link button I want to be able to open a child window which contains a RadGrid displaying the drill down data of the selected link button.
This is the code which builds the main RadGrid:
001.private Control DefineGridStructure(DataTable InGrid)002. {003. RadGrid grid = new RadGrid();004. grid.ID = "RadGridDetail";005. grid.DataSource = InGrid;006. grid.Skin = "Outlook";007. grid.Width = Unit.Percentage(100);008. grid.AllowPaging = false;009. grid.AutoGenerateColumns = false;010. grid.MasterTableView.Width = Unit.Percentage(100);011. grid.HeaderStyle.Font.Size = 10;012. grid.HeaderStyle.Font.Bold = true;013. grid.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;014. 015. try016. {017. grid.MasterTableView.DataKeyNames = new string[] { InGrid.Columns[1].ColumnName };018. 019. 020. GridBoundColumn Col1 = new GridBoundColumn();021. Col1.DataField = InGrid.Columns[0].ColumnName;022. //GridBoundColumn Col2 = new GridBoundColumn();023. //Col2.DataField = InGrid.Columns[1].ColumnName;024. 025. if (InGrid.Columns[0].ColumnName == "PDESC")026. {027. Col1.HeaderText = "Problem Description";028. //Col2.HeaderText = "Problem Code";029. }030. else031. {032. Col1.HeaderText = "Region";033. }034. grid.Columns.Add(Col1);035. 036. //Col3 - Query037. GridTemplateColumn Col3 = new GridTemplateColumn();038. Col3.ItemTemplate = new MyTemplate("Query", "£'s Val", "In Qry");039. Col3.HeaderText = "Query";040. grid.Columns.Add(Col3);041. 042. //Col4 - 90D043. GridTemplateColumn Col4 = new GridTemplateColumn();044. Col4.ItemTemplate = new MyTemplate("D90", 4, "lnk");045. Col4.HeaderText = "90+ Days";046. grid.Columns.Add(Col4);047. 048. //Col5 - Month 3049. GridTemplateColumn Col5 = new GridTemplateColumn();050. Col5.ItemTemplate = new MyTemplate("M3", 5, "lnk");051. Col5.HeaderText = Utils.GetMonth(3) + "-" + Utils.GetYear(3);052. grid.Columns.Add(Col5);053. 054. //Col6 - Month 2055. GridTemplateColumn Col6 = new GridTemplateColumn();056. Col6.ItemTemplate = new MyTemplate("M2", 6, "lnk");057. Col6.HeaderText = Utils.GetMonth(2) + "-" + Utils.GetYear(2);058. grid.Columns.Add(Col6);059. 060. //Col7 - Month 1061. GridTemplateColumn Col7 = new GridTemplateColumn();062. Col7.ItemTemplate = new MyTemplate("M1", 7, "lnk");063. Col7.HeaderText = Utils.GetMonth(1) + "-" + Utils.GetYear(1);064. grid.Columns.Add(Col7);065. 066. //*****Building dynamic number of weeks column******067. DataTable NumWeeks = Utils.GetDataTable("SELECT * FROM [dbo].[fn_GetNumWeeks]() ORDER BY intWEEK ASC");068. int numOfWeeks = NumWeeks.Rows.Count;069. 070. for (int i = 1; i < (numOfWeeks + 1); i++)071. {072. int columnNo = 7 + i;073. GridTemplateColumn Cols = new GridTemplateColumn();074. Cols.ItemTemplate = new MyTemplate("Wk" + i, columnNo, "lnk");075. Cols.HeaderText = Utils.GetMonth(0) + "<br/> " + "Week " + i;076. grid.Columns.Add(Cols);077. }078. //*************************************************079. 080. //Col13 - MTD081. GridTemplateColumn Col13 = new GridTemplateColumn();082. Col13.ItemTemplate = new MyTemplate("MTD", 13, "lnk");083. Col13.HeaderText = "MTD";084. grid.Columns.Add(Col13);085. 086. //Col14 - YTD087. GridTemplateColumn Col14 = new GridTemplateColumn();088. Col14.ItemTemplate = new MyTemplate("YTD", 14, "lbl");089. Col14.HeaderText = "YTD";090. grid.Columns.Add(Col14);091. 092. //Col15 - OO/S093. GridTemplateColumn Col15 = new GridTemplateColumn();094. Col15.ItemTemplate = new MyTemplate("OOS", 15, "lbl");095. Col15.HeaderText = "Overall <br/> Outstanding";096. grid.Columns.Add(Col15);097. 098. //Col16 - % OS Vs OV099. GridTemplateColumn Col16 = new GridTemplateColumn();100. Col16.ItemTemplate = new MyTemplate("Pct", 16, "lbl");101. Col16.HeaderText = "% Of Outstanding <br/> Vs Overall";102. grid.Columns.Add(Col16);103. 104. ShowResult.Controls.Add(grid);105. }106. catch107. {108. //No records found.109. }110. return grid;111. 112. }The columns are generated using Templates:
01.Label[] lblVal = new Label[17];02. Label[] lblQty = new Label[17];03. 04. LinkButton[] lnkVal = new LinkButton[17];05. LinkButton[] lnkQty = new LinkButton[17];06. 07. public MyTemplate(string cName, int typeID, string clinkOrLabel)08. {09. ID = typeID;10. templateType = cName;11. colname = cName;12. linkOrLabel = clinkOrLabel;13. Params = 3;14. }And finally, this is the InstantiateIn code which creates the grid and prints it to the screen:
01.public void InstantiateIn(Control container)02. {03. Literal lc = new Literal();04. lc.Text = "<hr style='border: 1px;border-style: dotted;'/>"; 05. 06. if(templateType == "Query")07. {08. Label lblValQ = new Label();09. lblValQ.ID = colname + "Val";10. Label lblQtyQ = new Label();11. lblQtyQ.ID = colname + "Qty";12. lblValQ.Font.Size = 9;13. lblQtyQ.Font.Size = 9;14. 15. if (Params == 3)16. {17. lblValQ.Text = ValCnt;18. lblQtyQ.Text = QtyCnt;19. }20. container.Controls.Add(lblValQ);21. container.Controls.Add(lc);22. container.Controls.Add(lblQtyQ);23. }24. else25. {26. //decided whether the field should be a link button or a label27. if (linkOrLabel == "lnk")28. {29. lnkVal[ID] = new LinkButton();30. lnkVal[ID].DataBinding += lnkVal_DataBinding;31. lnkVal[ID].Attributes.Add("OpenWindow", "openChildWindow(4,31,99);");32. lnkQty[ID] = new LinkButton();33. lnkQty[ID].DataBinding += lnkQty_DataBinding;34. lnkQty[ID].Attributes.Add("OpenWindow", "openChildWindow(4, 31,99);");35. 36. container.Controls.Add(lnkVal[ID]);37. container.Controls.Add(lc);38. container.Controls.Add(lnkQty[ID]);39. }40. else41. {42. lblVal[ID] = new Label();43. lblVal[ID].DataBinding += lblVal_DataBinding;44. lblQty[ID] = new Label();45. lblQty[ID].DataBinding += lblQty_DataBinding; 46. 47. container.Controls.Add(lblVal[ID]);48. container.Controls.Add(lc);49. container.Controls.Add(lblQty[ID]);50. }51. }52. }I am attempting to add Attributes to all the linkbuttons which will send to the javascript displayed below to get the data for the new window.
1.<script type="text/javascript" language="javascript">2. function openChildWindow(Period, SalesMn, intWeek, ReasCode) {3. window.open('RadGridExportWebForm.aspx?Period=' + Period + '&SalesMn=' + escape(SalesMn) + '&intWeek=' + intWeek + '&ReasCode=' + ReasCode, 'childWindow', 'width=800,height=600,scrollbars=1,menubar=0,status=0,toolbar=0,resizable=1,titlebar=0', false);4. };5. </script>However what is actually happening is the current page is simply reloading, it's not creating or opening a new window as I want it to.
I hope this makes sense
Any help would be greatly appreciated.
Many thanks!