純後臺動態生成aspchart ,這種方式沒辦法實現chart中click事件。click事件點擊沒有反應,用第二種能夠實現點擊事件。javascript
兩種方式實現同一種效果圖:java
第一種寫法:後臺動態生成aspchart字體
前臺代碼:ui
<div> <div class="h_10"> </div> <table cellpadding="0" cellspacing="1" border="0" width="100%"> <tr> <td> 時間:<input id="S_BeTime" type="text" class="mycalendar" name="S_BeTime" style="width: 90px;" value="" runat="server" />至 <input id="S_EndTime" type="text" class="mycalendar" name="S_EndTime" style="width: 90px;" value="" runat="server" /> <asp:Button ID="btnSeach" runat="server" Text="查詢" OnClick="btnSeach_Click" class="mybutton" Width="60px" /> </td> </tr> </table> <div id="tab" runat="server"></div> <div class="h_10"> </div> <table id="tabMain" runat="server" style="width: 100%; height: 700px; text-align: center; vertical-align:text-top; border: 1px solid #BFDAEF;"> </table> </div>
後臺代碼:this
using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.DataVisualization.Charting; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; namespace WebForm.HSE.COUNTTABLE { public partial class CIndex : Common.BasePage { RoadFlow.Platform.Organize mc = new RoadFlow.Platform.Organize(); RoadFlow.Platform.HSE_VIS_CHECKBLL HSEBLL = new RoadFlow.Platform.HSE_VIS_CHECKBLL(); private string parentID = "04f12beb-d99d-43df-ac9a-3042957d6bda";//廠的父節點id RoadFlow.Platform.Organize ORGBLL = new RoadFlow.Platform.Organize(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindData(); } } protected void btnSeach_Click(object sender, EventArgs e) { BindData(); } private void BindData() { string strSql = CreateStrWhere(); DataSet ds = HSEBLL.GetList(strSql); DataTable BindCharDtOne = new DataTable();//綁定圖表的dt 檢查問題明細 BindCharDtOne.Columns.Add("DeptName");//部門姓名 BindCharDtOne.Columns.Add("Colum");//數量 DataTable BindCharDtTwo = new DataTable();//綁定圖表的dt 未整改 BindCharDtTwo.Columns.Add("DeptName");//部門姓名 BindCharDtTwo.Columns.Add("Colum");//數量 List<RoadFlow.Data.Model.Organize> ORGModel = ORGBLL.GetChilds(parentID.ToGuid()); for (int i = 0; i < ORGModel.Count; i++) { string orgid= ORGModel[i].ID.ToString(); string orgname = ORGModel[i].Name.ToString(); //檢查問題數 int countOne = SortDataTable(ds.Tables[0], " CK_CKORG ='" + orgid + "' and (CK_ISFLOW ='1' or CK_ISFLOW='2')", "CREATETIME Desc", 2); DataRow drOne; drOne = BindCharDtOne.NewRow(); drOne["DeptName"] = orgname; drOne["Colum"] = countOne.ToString(); BindCharDtOne.Rows.Add(drOne); //未整改數 int countTwo = SortDataTable(ds.Tables[0], " CK_CKORG ='" + orgid + "' and (CK_ISFLOW ='1' or CK_ISFLOW='2') AND PH_CHECKRELATION ='132ec6dc-7424-4f71-9b79-45b70f000644'", "CREATETIME Desc", 2); DataRow drTwo; drTwo = BindCharDtTwo.NewRow(); drTwo["DeptName"] = orgname; drTwo["Colum"] = countTwo.ToString(); BindCharDtTwo.Rows.Add(drTwo); } DrawTable(BindCharDtOne,"檢查問題統計表",0); DrawTable(BindCharDtTwo, "未整改問題統計表", 5); } //畫圖 private void DrawTable(DataTable dt,string name,int j) { HtmlTableRow tbRow = new HtmlTableRow(); HtmlTableCell tbCell = new HtmlTableCell(); tbCell.VAlign = "Top"; tbCell.Align = "center"; Chart Chart1 = new Chart(); Chart1.Click += new ImageMapEventHandler(Chart1_Click); Chart1.BackColor = Color.FromArgb(211, 223, 240); Chart1.Height = 356; Chart1.Width = 1224; Chart1.BorderlineDashStyle = ChartDashStyle.Solid; Chart1.BackGradientStyle = GradientStyle.TopBottom; Chart1.BorderlineColor = Color.FromArgb(26, 59, 105); Chart1.IsSoftShadows = false; BorderSkin bdsk = new BorderSkin(); bdsk.SkinStyle = BorderSkinStyle.Emboss; Chart1.BorderSkin = bdsk; Series series = new Series("columSeries"); //實例Series 集合 對象 series.ChartType = SeriesChartType.Column; series.XValueType = ChartValueType.Double; //Series的邊框顏色 series.BorderColor = Color.FromArgb(180, 26, 59, 105); //線條寬度 series.BorderWidth = 1; //線條陰影顏色 series.ShadowColor = Color.Black; //陰影寬度 series.ShadowOffset = 2; //是否顯示數聽說明 series.IsVisibleInLegend = true; //線條上數據點上是否有數據顯示 series.IsValueShownAsLabel = true; //線條上的數據點標誌類型 series.MarkerStyle = MarkerStyle.Circle; //線條數據點的大小 series.MarkerSize = 8; //鼠標懸停顯示內容 series.ToolTip = "單位:#AXISLABEL \\n次數:#VAL"; //設置柱子的寬度 series.CustomProperties = "PointWidth=0.5"; Font sf = new Font("微軟雅黑", 10F, FontStyle.Bold); series.Font = sf; //線條顏色 //線條顏色 switch (j) { case 0: series.Color = Color.FromArgb(220, 65, 140, 240); break; case 1: series.Color = Color.FromArgb(220, 224, 64, 10); break; case 3: series.Color = Color.FromArgb(220, 120, 150, 20); break; case 4: series.Color = Color.FromArgb(220, 120, 130, 40); break; case 5: series.Color = Color.FromArgb(220, 120, 190, 120); break; case 6: series.Color = Color.FromArgb(220, 120, 140, 29); break; case 7: series.Color = Color.FromArgb(220, 120, 150, 20); break; case 8: series.Color = Color.FromArgb(220, 120, 150, 20); break; case 9: series.Color = Color.FromArgb(220, 120, 150, 20); break; } ////設置圖表Y軸對應項 series.YValueMembers = "Colum"; ////設置圖表X軸對應項 series.XValueMember = "DeptName"; series.PostBackValue = "#AXISLABEL"; Chart1.Series.Add(series); ChartArea area = new ChartArea("columArea"); //實例 ChartArea 對象 //背景色 area.BackColor = Color.FromArgb(64, 165, 191, 228); //背景漸變方式 area.BackGradientStyle = GradientStyle.TopBottom; //漸變和陰影的輔助背景色 area.BackSecondaryColor = Color.White; //邊框顏色 area.BorderColor = Color.FromArgb(64, 64, 64, 64); //陰影顏色 area.ShadowColor = Color.Transparent; //設置X軸和Y軸線條的顏色和寬度 area.AxisX.LineColor = Color.FromArgb(64, 64, 64, 64); area.AxisX.LineWidth = 1; area.AxisY.LineColor = Color.FromArgb(64, 64, 64, 64); area.AxisY.LineWidth = 1; //設置X軸和Y軸的標題 area.AxisX.Title = "X:單位"; area.AxisY.Title = "Y:次數"; //設置圖表區網格橫縱線條的顏色和寬度 area.AxisX.MajorGrid.LineColor = Color.FromArgb(64, 64, 64, 64); area.AxisX.MajorGrid.LineWidth = 1; area.AxisY.MajorGrid.LineColor = Color.FromArgb(64, 64, 64, 64); area.AxisY.MajorGrid.LineWidth = 1; area.AxisX.Interval = 1; //設置X軸座標的間隔爲1 area.AxisX.IntervalOffset = 1; //設置X軸座標偏移爲1 area.AxisX.LabelStyle.Angle = 90; area.AxisX.LabelStyle.IsStaggered = false; //設置是否交錯顯示,好比數據多的時間分紅兩行來顯示 area.AxisX.LabelAutoFitStyle = LabelAutoFitStyles.WordWrap; //設置X軸文字大小 area.AxisX.LabelAutoFitMinFontSize = 16; area.AxisX.TitleFont = new Font("微軟雅黑", 10F, FontStyle.Regular); area.AxisY.TitleFont = new Font("微軟雅黑", 10F, FontStyle.Regular); Chart1.ChartAreas.Add(area); // 將ChartArea 對象添加到chart 對象中 //添加標題 Title tile = new Title(); tile.Text = string.Format("{0} ", name); //標題的字體 tile.Font = new System.Drawing.Font("Microsoft Sans Serif", 12, FontStyle.Bold); //標題字體顏色 tile.ForeColor = Color.FromArgb(26, 59, 105); //標題陰影顏色 tile.ShadowColor = Color.FromArgb(32, 0, 0, 0); //標題陰影偏移量 tile.ShadowOffset = 3; Chart1.Titles.Add(tile); //------------ //設置圖表的數據源 Chart1.DataSource = dt; //綁定數據 Chart1.DataBind(); Panel pan = new Panel();//顯示滾動條的panel pan.Width = 1200; pan.ScrollBars = ScrollBars.Horizontal; pan.Attributes.Add("style", "overflow-y: hidden;");//隱藏Y軸滾動條 pan.Controls.Add(Chart1); tbCell.Controls.Add(pan); tbRow.Cells.Add(tbCell); this.tabMain.Controls.Add(tbRow); this.tab.InnerHtml = ""; } /// <summary> /// Handles the Click event of the Chart1 control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.Web.UI.WebControls.ImageMapEventArgs"/> instance containing the event data.</param> protected void Chart1_Click(object sender, ImageMapEventArgs e) { string[] input = e.PostBackValue.Split(':'); } private string CreateStrWhere() { string strwhere = " 1=1 "; string date1 = S_BeTime.Value; string date2 = S_EndTime.Value; if (date1.IsDateTime()) { strwhere += " AND CK_TIME >=to_date('" + date1.ToDateTime().ToString("yyyy-MM-dd 00:00:00") + "','yyyy-mm-dd hh24:mi:ss')"; } if (date2.IsDateTime()) { strwhere += " AND CK_TIME <=to_date('" + date2.ToDateTime().AddDays(1).ToString("yyyy-MM-dd 00:00:00") + "','yyyy-mm-dd hh24:mi:ss')"; } strwhere += " order by createtime desc "; return strwhere; } #region DataTable篩選,排序返回符合條件行組成的新DataTable或直接用DefaultView按條件返回 /// <summary> /// DataTable篩選,排序返回符合條件行組成的新DataTable或直接用DefaultView按條件返回 /// eg:SortExprDataTable(dt,"Sex='男'","Time Desc",1) /// </summary> /// <param name="dt">傳入的DataTable</param> /// <param name="strExpr">篩選條件</param> /// <param name="strSort">排序條件</param> /// <param name="mode">1,直接用DefaultView按條件返回,效率較高;2,DataTable篩選,排序返回符合條件行組成的新DataTable</param> public int SortDataTable(DataTable dt, string strExpr, string strSort, int mode) { int Count = 0; switch (mode) { case 1: //方法一 直接用DefaultView按條件返回 dt.DefaultView.RowFilter = strExpr; dt.DefaultView.Sort = strSort; Count = dt.Rows.Count; return Count; case 2: //方法二 DataTable篩選,排序返回符合條件行組成的新DataTable DataTable dt1 = new DataTable(); DataRow[] GetRows = dt.Select(strExpr, strSort); //複製DataTable dt結構不包含數據 dt1 = dt.Clone(); foreach (DataRow row in GetRows) { dt1.Rows.Add(row.ItemArray); } Count = dt1.Rows.Count; return Count; default: return Count; } } #endregion } }
第二種寫法:前臺代碼編寫asp:chart,後臺寫代碼,並實現點擊事件Clickspa
前臺代碼:2個chart3d
<form id="form1" runat="server"> <div> <div class="h_10"> </div> <table cellpadding="0" cellspacing="1" border="0" width="100%"> <tr> <td>時間:<input id="S_BeTime" type="text" class="mycalendar" name="S_BeTime" style="width: 90px;" value="" runat="server" />至 <input id="S_EndTime" type="text" class="mycalendar" name="S_EndTime" style="width: 90px;" value="" runat="server" /> <asp:Button ID="btnSeach" runat="server" Text="查詢" OnClick="btnSeach_Click" class="mybutton" Width="60px" /> </td> </tr> </table> <div id="tab" runat="server"></div> <div class="h_10"> </div> <table id="tabMain" runat="server" style="width: 100%; height: 700px; text-align: center; vertical-align: text-top; border: 1px solid #BFDAEF;"> --%> <tr> <td> <asp:Panel runat="server" Width="1200" ScrollBars="Horizontal " Style="overflow-y: hidden;"> <asp:Chart ID="Chart1" Width="1224" runat="server" ImageType="Png" Height="356" BorderlineDashStyle="Solid" BorderlineColor="26, 59, 105" BackGradientStyle="TopBottom" BorderWidth="2" BackColor="211, 223, 240" IsSoftShadows="false" OnClick="Chart1_Click"> <Legends> <asp:Legend BackColor="Transparent" Alignment="Center" Docking="Bottom" Font="Trebuchet MS, 8.25pt, style=Bold" IsTextAutoFit="False" Name="Default" LegendStyle="Row"></asp:Legend> </Legends> <BorderSkin SkinStyle="Emboss"></BorderSkin> <Series> <asp:Series Name="Series1" ChartType="Column" XValueType="Double" BorderColor="180, 26, 59, 105" BorderWidth="1" ShadowColor="Black" ShadowOffset="2" IsVisibleInLegend="true" IsValueShownAsLabel="true" MarkerStyle="Circle" MarkerSize="8" ToolTip="單位:#AXISLABEL \\n數量:#VAL" CustomProperties="PointWidth=0.5" ChartArea="ChartArea1" Color="220, 65, 140, 240" YValueMembers="Colum" XValueMember="DeptName"> </asp:Series> </Series> <ChartAreas> <asp:ChartArea Name="ChartArea1" BorderColor="64, 64, 64, 64" BackSecondaryColor="White" BackColor="64, 165, 191, 228" ShadowColor="Transparent" BackGradientStyle="TopBottom"> <AxisX LineColor="64, 64, 64, 64" LineWidth="1" Title="X:單位" Interval="1" IntervalOffset="1" LabelAutoFitStyle="WordWrap"> <MajorGrid LineColor="64, 64, 64, 64" LineWidth="1" /> <LabelStyle Angle="90" IsStaggered="false" /> </AxisX> <AxisY LineColor="64, 64, 64, 64" LineWidth="1" Title="Y:次數"> <MajorGrid LineColor="64, 64, 64, 64" LineWidth="1" /> </AxisY> </asp:ChartArea> </ChartAreas> </asp:Chart> </asp:Panel> </td> </tr> <tr> <td> <asp:Panel runat="server" Width="1200" ScrollBars="Horizontal " Style="overflow-y: hidden;"> <asp:Chart ID="Chart2" Width="1224" runat="server" ImageType="Png" Height="356" BorderlineDashStyle="Solid" BorderlineColor="26, 59, 105" BackGradientStyle="TopBottom" BorderWidth="2" BackColor="211, 223, 240" IsSoftShadows="false" OnClick="Chart2_Click"> <Legends> <asp:Legend BackColor="Transparent" Alignment="Center" Docking="Bottom" Font="Trebuchet MS, 8.25pt, style=Bold" IsTextAutoFit="False" Name="Default" LegendStyle="Row"></asp:Legend> </Legends> <BorderSkin SkinStyle="Emboss"></BorderSkin> <Series> <asp:Series Name="Series2" ChartType="Column" XValueType="Double" BorderColor="180, 26, 59, 105" BorderWidth="1" ShadowColor="Black" ShadowOffset="2" IsVisibleInLegend="true" IsValueShownAsLabel="true" MarkerStyle="Circle" MarkerSize="8" ToolTip="單位:#AXISLABEL \\n數量:#VAL" CustomProperties="PointWidth=0.5" ChartArea="ChartArea2" Color="220, 65, 140, 240" YValueMembers="Colum" XValueMember="DeptName"> </asp:Series> </Series> <ChartAreas> <asp:ChartArea Name="ChartArea2" BorderColor="64, 64, 64, 64" BackSecondaryColor="White" BackColor="64, 165, 191, 228" ShadowColor="Transparent" BackGradientStyle="TopBottom"> <AxisX LineColor="64, 64, 64, 64" LineWidth="1" Title="X:單位" Interval="1" IntervalOffset="1" LabelAutoFitStyle="WordWrap"> <MajorGrid LineColor="64, 64, 64, 64" LineWidth="1" /> <LabelStyle Angle="90" IsStaggered="false" /> </AxisX> <AxisY LineColor="64, 64, 64, 64" LineWidth="1" Title="Y:次數"> <MajorGrid LineColor="64, 64, 64, 64" LineWidth="1" /> </AxisY> </asp:ChartArea> </ChartAreas> </asp:Chart> </asp:Panel> </td> </tr> </table> </div> </form>
後臺代碼:code
using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.DataVisualization.Charting; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; namespace WebForm.HSE.COUNTTABLE { public partial class CTest : Common.BasePage { RoadFlow.Platform.Organize mc = new RoadFlow.Platform.Organize(); RoadFlow.Platform.HSE_VIS_CHECKBLL HSEBLL = new RoadFlow.Platform.HSE_VIS_CHECKBLL(); private string parentID = "04f12beb-d99d-43df-ac9a-3042957d6bda";//廠的父節點id RoadFlow.Platform.Organize ORGBLL = new RoadFlow.Platform.Organize(); protected void Page_Load(object sender, EventArgs e) { this.Chart1.Series["Series1"].PostBackValue = "#AXISLABEL"; this.Chart2.Series["Series2"].PostBackValue = "#AXISLABEL"; if (!IsPostBack) { BindData(); } } protected void btnSeach_Click(object sender, EventArgs e) { BindData(); } private void BindData() { string strSql = CreateStrWhere(); DataSet ds = HSEBLL.GetList(strSql); DataTable BindCharDtOne = new DataTable();//綁定圖表的dt 檢查問題明細 BindCharDtOne.Columns.Add("DeptName");//部門姓名 BindCharDtOne.Columns.Add("Colum");//數量 DataTable BindCharDtTwo = new DataTable();//綁定圖表的dt 未整改 BindCharDtTwo.Columns.Add("DeptName");//部門姓名 BindCharDtTwo.Columns.Add("Colum");//數量 List<RoadFlow.Data.Model.Organize> ORGModel = ORGBLL.GetChilds(parentID.ToGuid()); for (int i = 0; i < ORGModel.Count; i++) { string orgid = ORGModel[i].ID.ToString(); string orgname = ORGModel[i].Name.ToString(); //檢查問題數 int countOne = SortDataTable(ds.Tables[0], " CK_CKORG ='" + orgid + "' and (CK_ISFLOW ='1' or CK_ISFLOW='2')", "CREATETIME Desc", 2); DataRow drOne; drOne = BindCharDtOne.NewRow(); drOne["DeptName"] = orgname; drOne["Colum"] = countOne.ToString(); BindCharDtOne.Rows.Add(drOne); //未整改數 int countTwo = SortDataTable(ds.Tables[0], " CK_CKORG ='" + orgid + "' and (CK_ISFLOW ='1' or CK_ISFLOW='2') AND PH_CHECKRELATION ='132ec6dc-7424-4f71-9b79-45b70f000644'", "CREATETIME Desc", 2); DataRow drTwo; drTwo = BindCharDtTwo.NewRow(); drTwo["DeptName"] = orgname; drTwo["Colum"] = countTwo.ToString(); BindCharDtTwo.Rows.Add(drTwo); } DrawOne(BindCharDtOne, "檢查問題統計表", 0); DrawTwo(BindCharDtTwo, "未整改問題統計表", 5); } private void DrawOne(DataTable dt, string name, int j) { double[] yValues = new double[dt.Rows.Count]; string[] xValues = new string[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { yValues[i] = Convert.ToDouble(dt.Rows[i]["Colum"]); xValues[i] = dt.Rows[i]["DeptName"].ToString(); } Chart1.Series["Series1"].Points.DataBindXY(xValues, yValues); Font sf = new Font("微軟雅黑", 10F, FontStyle.Bold); Chart1.Series["Series1"].Font = sf; Chart1.ChartAreas["ChartArea1"].AxisX.TitleFont = new Font("微軟雅黑", 10F, FontStyle.Regular); Chart1.ChartAreas["ChartArea1"].AxisY.TitleFont = new Font("微軟雅黑", 10F, FontStyle.Regular); //添加標題 Title tile = new Title(); tile.Text = string.Format("{0} ", name); //標題的字體 tile.Font = new System.Drawing.Font("Microsoft Sans Serif", 12, FontStyle.Bold); //標題字體顏色 tile.ForeColor = Color.FromArgb(26, 59, 105); //標題陰影顏色 tile.ShadowColor = Color.FromArgb(32, 0, 0, 0); //標題陰影偏移量 tile.ShadowOffset = 3; Chart1.Titles.Add(tile); } private void DrawTwo(DataTable dt, string name, int j) { double[] yValues = new double[dt.Rows.Count]; string[] xValues = new string[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { yValues[i] = Convert.ToDouble(dt.Rows[i]["Colum"]); xValues[i] = dt.Rows[i]["DeptName"].ToString(); } Chart2.Series["Series2"].Points.DataBindXY(xValues, yValues); Font sf = new Font("微軟雅黑", 10F, FontStyle.Bold); Chart2.Series["Series2"].Font = sf; Chart2.ChartAreas["ChartArea2"].AxisX.TitleFont = new Font("微軟雅黑", 10F, FontStyle.Regular); Chart2.ChartAreas["ChartArea2"].AxisY.TitleFont = new Font("微軟雅黑", 10F, FontStyle.Regular); //添加標題 Title tile = new Title(); tile.Text = string.Format("{0} ", name); //標題的字體 tile.Font = new System.Drawing.Font("Microsoft Sans Serif", 12, FontStyle.Bold); //標題字體顏色 tile.ForeColor = Color.FromArgb(26, 59, 105); //標題陰影顏色 tile.ShadowColor = Color.FromArgb(32, 0, 0, 0); //標題陰影偏移量 tile.ShadowOffset = 3; Chart2.Titles.Add(tile); } protected void Chart1_Click(object sender, ImageMapEventArgs e) { string str = Server.UrlEncode(e.PostBackValue.Split(':')[0]); string date1 = Server.UrlEncode(S_BeTime.Value); string date2 = Server.UrlEncode(S_EndTime.Value); BindData(); Response.Write(" <script language=javascript> window.open ( 'CDetail.aspx?name=" + str.ToString() + "&date1=" + date1 + "&date2=" + date2 + "&type=1 ', '查看詳細', 'height=420, width=900, top=200,left=270, toolbar=yes, menubar=no, scrollbars=yes, resizable=no, location=no, status=no ') </script> "); } protected void Chart2_Click(object sender, ImageMapEventArgs e) { string str = Server.UrlEncode(e.PostBackValue.Split(':')[0]); string date1 = Server.UrlEncode(S_BeTime.Value); string date2 = Server.UrlEncode(S_EndTime.Value); BindData(); Response.Write(" <script language=javascript> window.open ( 'CDetail_NoRepair.aspx?name=" + str.ToString() + "&date1=" + date1 + "&date2=" + date2 + "&type=2 ', '查看詳細', 'height=420, width=1000, top=200,left=270, toolbar=no, menubar=no, scrollbars=yes, resizable=no, location=no, status=no ') </script> "); } private string CreateStrWhere() { string strwhere = " 1=1 "; string date1 = S_BeTime.Value; string date2 = S_EndTime.Value; if (date1.IsDateTime()) { strwhere += " AND CK_TIME >=to_date('" + date1.ToDateTime().ToString("yyyy-MM-dd 00:00:00") + "','yyyy-mm-dd hh24:mi:ss')"; } if (date2.IsDateTime()) { strwhere += " AND CK_TIME <=to_date('" + date2.ToDateTime().AddDays(1).ToString("yyyy-MM-dd 00:00:00") + "','yyyy-mm-dd hh24:mi:ss')"; } strwhere += " order by createtime desc "; return strwhere; } #region DataTable篩選,排序返回符合條件行組成的新DataTable或直接用DefaultView按條件返回 /// <summary> /// DataTable篩選,排序返回符合條件行組成的新DataTable或直接用DefaultView按條件返回 /// eg:SortExprDataTable(dt,"Sex='男'","Time Desc",1) /// </summary> /// <param name="dt">傳入的DataTable</param> /// <param name="strExpr">篩選條件</param> /// <param name="strSort">排序條件</param> /// <param name="mode">1,直接用DefaultView按條件返回,效率較高;2,DataTable篩選,排序返回符合條件行組成的新DataTable</param> public int SortDataTable(DataTable dt, string strExpr, string strSort, int mode) { int Count = 0; switch (mode) { case 1: //方法一 直接用DefaultView按條件返回 dt.DefaultView.RowFilter = strExpr; dt.DefaultView.Sort = strSort; Count = dt.Rows.Count; return Count; case 2: //方法二 DataTable篩選,排序返回符合條件行組成的新DataTable DataTable dt1 = new DataTable(); DataRow[] GetRows = dt.Select(strExpr, strSort); //複製DataTable dt結構不包含數據 dt1 = dt.Clone(); foreach (DataRow row in GetRows) { dt1.Rows.Add(row.ItemArray); } Count = dt1.Rows.Count; return Count; default: return Count; } } #endregion } }
注意:orm
this.Chart1.Series["Series1"].PostBackValue = "#AXISLABEL"; 這句話是實現click事件的關鍵