/// <summary> /// 确保控件显示的上下文环境,使用界面设计器时,应调用此方法,因为控件的某些状态可能需要完整的 /// 页面来显示,控件需要对页面作相应处理,不使用界面设计器时用上一方法即可,它会自动调用此方 /// 法。此外,控件的客户端资源URL也需要借此处理。返回值表明是否继续构造界面,为真时应该终止后 /// 续的任何界面相关的操作(此时响应流已关闭)。 /// </summary> /// <param name="parent"></param> public bool EnsureControlEnvironment(Control parent) { if (ControlStateUrl.HandleResourceRequest()) { return(true); } if (parent.Page == null) { return(false); } string refScript = "<LINK href='" + ControlStateUrl.BuildResourceRequestUrl(cssUrl) + "' type='text/css' rel='stylesheet'>\r\n" + "<script language='javascript' src=" + ControlStateUrl.BuildResourceRequestUrl(scpUrl) + "></script>\r\n" + @" <script language='javascript'> function getTree(obj) { if(!obj.tree) { var treeObj=new TreeTable('',obj);" + " treeObj.rootImage='"+ rootImg + "';\r\n" + " treeObj.openImage='"+ openImg + "';\r\n" + " treeObj.closeImage='"+ closeImg + "';\r\n" + " treeObj.open2Image='"+ open2Img + "';\r\n" + " treeObj.close2Image='"+ close2Img + "';\r\n" + " treeObj.line='"+ lineImg + "';\r\n" + " treeObj.minus='"+ minusImg + "';\r\n" + " treeObj.plus='"+ plusImg + "';\r\n" + " treeObj.empty='"+ emptyImg + "';\r\n" + @" return treeObj; } return obj.tree; } </script> " ; parent.Page.RegisterClientScriptBlock("TreeTableClientScript", refScript); return(false); }
protected override void Handle() { dynamicTable = StatisticControl.GetWebDynamicTable(); StatisticControl.OnStatTableUseDynamicTable(dynamicTable); DataTable data = StatisticControl.Data; DataView dataView = new DataView(data); string[] sorts = StatisticControl.Sorts; if (sorts != null) { dataView.Sort = string.Join(",", sorts); } string[] groups = StatisticControl.Groups; int groupNum = 0; if (groups != null) { groupNum = groups.Length; } StringCollection sc = new StringCollection(); foreach (DataColumn dc in dataView.Table.Columns) { sc.Add(dc.ColumnName); } table = StatisticControl.GetStatTable(); StatisticRow statRow = null, lastRow = null; if (statRow == null) { statRow = StatisticRow.CreateTotalRow(table, groupNum, dynamicTable, StatisticControl.MaxFieldWidth, StatisticControl.BaseColor, StatisticControl.DeltaColor); lastRow = statRow; } for (int i = 0; i < groupNum; i++) { string field = groups[i]; sc.Remove(field); lastRow = lastRow.CreateSubGroup(dataView.Table.Columns.IndexOf(field)); } foreach (string field in sc) { DataColumn dc = dataView.Table.Columns[field]; lastRow = statRow; while (lastRow != null) { lastRow.AddField(dc, StatisticControl.GetStatisticFieldType(field)); lastRow = lastRow.SubGroup; } } statRow.DisplayHead(statRow, dataView); for (int ii = 0; ii < dataView.Count; ii++) { DataRowView drv = dataView[ii]; statRow.ExecStatistic(drv, false); if (ii == dataView.Count - 1) { statRow.ExecStatistic(drv, true); //结束统计 } } Table t = new Table(); t.Width = Unit.Percentage(100.0); TableRow tr = new TableRow(); TableCell tc = new TableCell(); tr.Cells.Add(tc); t.Rows.Add(tr); if ((StatisticControl.DisplayButtons & DisplayButtons.EXPORT) == DisplayButtons.EXPORT) { ImageButton exportBtn = new ImageButton(); exportBtn.ID = "ExportBtn"; exportBtn.ImageUrl = ControlStateUrl.BuildResourceRequestUrl(StatisticControl.ExportIcon); exportBtn.ToolTip = StatisticControl.ExportToolTip; exportBtn.CommandName = "Export"; exportBtn.Click += new ImageClickEventHandler(this.ButtonClick); tc.Controls.Add(exportBtn); } if ((StatisticControl.DisplayButtons & DisplayButtons.SEARCH) == DisplayButtons.SEARCH) { ImageButton searchBtn = new ImageButton(); searchBtn.ID = "SearchBtn"; searchBtn.ImageUrl = ControlStateUrl.BuildResourceRequestUrl(StatisticControl.SearchIcon); searchBtn.ToolTip = "搜索数据"; searchBtn.CommandName = "Search"; searchBtn.Click += new ImageClickEventHandler(this.ButtonClick); tc.Controls.Add(searchBtn); } tc.HorizontalAlign = HorizontalAlign.Right; tr = new TableRow(); tc = new TableCell(); tr.Cells.Add(tc); t.Rows.Add(tr); tc.Controls.Add(table); StatisticControl.Controls.Add(t); StatisticControl.OnShowStatTable(t, table); StatisticControl.Page.RegisterClientScriptBlock("InfoServiceCss", "<LINK href='" + StatisticControl.CssUrl + "' type='text/css' rel='stylesheet'>"); StatisticControl.Page.RegisterClientScriptBlock("ShowControlClientScript", @" <script language='javascript'> <!-- function openHtml(obj) { var pobj=obj.parentElement; if(pobj) { try { var w=window.open('about:blank','HTMLVIEW','resizable=yes,scrollbars=yes'); w.document.write(pobj.dreamanHtml); } catch(eee) { alert('您的浏览器好象禁止了弹出窗口,无法查看HTML内容!'); } event.returnValue=false; } } --> </script> " ); }
protected override void Handle() { Table t = new Table(); TableRow tr = new TableRow(); TableCell tc = new TableCell(); tr.Cells.Add(tc); t.Rows.Add(tr); dynaTable = StatisticControl.GetWebDynamicTable(); dynaTable.CssUrl = ControlStateUrl.BuildResourceRequestUrl(StatisticControl.CssUrl); dynaTable.ScriptUrl = ControlStateUrl.BuildResourceRequestUrl(StatisticControl.ScriptUrl); dynaTable.MaxFieldWidth = StatisticControl.MaxFieldWidth; dynaTable.UseGroups = true; if (StatisticControl.Groups != null && StatisticControl.Groups.Length > 0) { foreach (string g in StatisticControl.Groups) { dynaTable.SetFieldGroup(g, true); } } if (StatisticControl.Sorts != null && StatisticControl.Sorts.Length > 0) { for (int i = 1; i <= StatisticControl.Sorts.Length; i++) { int sort = i; string field = StatisticControl.Sorts[i - 1].Trim(); if (field.ToUpper().EndsWith("DESC")) { sort = -sort; field = field.Substring(0, field.Length - 4).Trim(); } dynaTable.SetFieldSort(field, sort); } } foreach (string s in dynaTable.KeyFields) { dynaTable[s].StatMethod = StatisticControl.GetStatisticFieldType(s); } foreach (string s in dynaTable.NormalFields) { dynaTable[s].StatMethod = StatisticControl.GetStatisticFieldType(s); } dynaTable.UI = WebDynamicTableUI.QUERY; StatisticControl.OnShowSearch(dynaTable); LiteralControl lc = new LiteralControl(dynaTable.GenerateHtml()); dynaTable.RegisterCss(StatisticControl.Page); dynaTable.RegisterScript(StatisticControl.Page); tc.Controls.Add(lc); tr = new TableRow(); tc = new TableCell(); tr.Cells.Add(tc); t.Rows.Add(tr); ImageButton okBtn = new ImageButton(); okBtn.ID = "OK"; okBtn.ImageUrl = ControlStateUrl.BuildResourceRequestUrl(StatisticControl.SearchIcon); okBtn.ToolTip = "开始搜索符合条件的数据"; okBtn.CommandName = "Ok"; okBtn.Click += new ImageClickEventHandler(this.ButtonClick); tc.Controls.Add(okBtn); ImageButton returnBtn = new ImageButton(); returnBtn.ID = "Return"; returnBtn.ImageUrl = ControlStateUrl.BuildResourceRequestUrl(StatisticControl.ReturnIcon); returnBtn.ToolTip = "返回数据表"; returnBtn.CommandName = "Return"; returnBtn.Click += new ImageClickEventHandler(this.ButtonClick); tc.Controls.Add(returnBtn); tc.HorizontalAlign = HorizontalAlign.Center; StatisticControl.Controls.Add(t); }