⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 runrepoertviewctl.cs

📁 树形逻辑报表程序源码,能根居元数据定义拖拉开发新的报表.
💻 CS
📖 第 1 页 / 共 4 页
字号:

						conn.Close();
					}
					else //textbox
					{
						TextBox textbx = new TextBox();
						textbx.Width = ctlwidth*fontsize;
						textbx.Height = controlheigt;
						textbx.Location = currentpos;
						groupBox_searchcontition.Controls.Add(textbx);
							
						if ("Y".Equals(""+rw["EqualOrRange"]))//from ....to ....范围
						{
							//from控件
							if (typechar.Equals("N")||typechar.Equals("B"))
							{
								textbx.Tag = ""+rw["DataField"]+">=@text@";
								datatypesarray.Add("N");
							}
							else if (typechar.Equals("D"))
							{
								//textbx.Tag = ""+rw["DataField"]+">={ts'@text@'}";//多数据库时,要考虑不同类数据库间的差异性
								textbx.Tag = ""+rw["DataField"]+">='@text@'";//多数据库时,要考虑不同类数据库间的差异性
								datatypesarray.Add("D");
							}
							else
							{ 
								textbx.Tag = ""+rw["DataField"]+">='@text@'";
								datatypesarray.Add("C");
							}
							
							controlsarray.Add(textbx);
							ctltypesarray.Add("TextBox");
							currentpos = new Point(currentpos.X+textbx.Width,currentpos.Y);
				
							//中间的“-”
							fieldlable = new System.Windows.Forms.Label();
							fieldlable.Text = "-";
							fieldlable.Width = 8;
							fieldlable.Height = controlheigt;
							fieldlable.Location = currentpos;
							groupBox_searchcontition.Controls.Add(fieldlable);
							currentpos = new Point(currentpos.X+fieldlable.Width,currentpos.Y);

							//to控件
							textbx = new TextBox();
							textbx.Width = ctlwidth*fontsize;
							textbx.Height = controlheigt;
							textbx.Location = currentpos;
							groupBox_searchcontition.Controls.Add(textbx);
							
							if (typechar.Equals("N")||typechar.Equals("B"))
							{
								textbx.Tag = ""+rw["DataField"]+"<=@text@";
								datatypesarray.Add("N");
							}
							else if (typechar.Equals("D"))
							{
								//textbx.Tag = ""+rw["DataField"]+"<={ts'@text@'}";//多数据库时,要考虑不同类数据库间的差异性
								textbx.Tag = ""+rw["DataField"]+"<='@text@'";//多数据库时,要考虑不同类数据库间的差异性
								datatypesarray.Add("D");
							}
							else
							{ 
								textbx.Tag = ""+rw["DataField"]+"<='@text@'";
								datatypesarray.Add("C");
							}
							
							controlsarray.Add(textbx);
							ctltypesarray.Add("TextBox");
							currentpos = new Point(currentpos.X+textbx.Width+20,currentpos.Y);
						}
						else
						{
							if (typechar.Equals("N")||typechar.Equals("B"))
							{
								textbx.Tag = ""+rw["DataField"]+"=@text@";
								datatypesarray.Add("N");
							}
							else if (typechar.Equals("D"))
							{
								//textbx.Tag = ""+rw["DataField"]+"={ts'@text@'}";//多数据库时,要考虑不同类数据库间的差异性
								textbx.Tag = ""+rw["DataField"]+"='@text@'";//多数据库时,要考虑不同类数据库间的差异性
								datatypesarray.Add("D");
							}
							else
							{ 
								textbx.Tag = ""+rw["DataField"]+"='@text@'";
								datatypesarray.Add("C");
							}
							
							controlsarray.Add(textbx);
							ctltypesarray.Add("TextBox");
							currentpos = new Point(currentpos.X+textbx.Width+20,currentpos.Y);
						}

					}
				}

			}
	
			return true;
		}

		#endregion

		#region 用户操作事件处理

		/// <summary>
		/// button_reportrun_Click - 点击运行报表
		/// </summary>
		private void button_reportrun_Click(object sender, System.EventArgs e)
		{
			runRepoert();		
		}


		/// <summary>
		/// button_brows_Click - 弹出报表候选列表
		/// </summary>
		private void button_brows_Click(object sender, System.EventArgs e)
		{
			TreeReportSelectFrm selectdlg = new TreeReportSelectFrm();
			//初始化报表选择窗体
			selectdlg._idlist = idlist;
			selectdlg._desclist = desclist;
			selectdlg._wherestr = whereForReports;


			//设置报表选择窗体的位置,使它位于报表名称控件之下,能象下接框下样弹出
			Point pt = panel_operatereport.PointToScreen(new Point(label_report.Left,label_report.Bottom));
			selectdlg.Left = pt.X;
			selectdlg.Top = pt.Y;

			selectdlg.ShowDialog(this);//弹出报表选择窗体

			if (selectdlg._selectreportid.Length>0)//选了某个报表
			{
				initRepoert(selectdlg._selectreportid,selectdlg._selectreportdescript);
			}
		}
		
		private void button_reportcontition_Click(object sender, System.EventArgs e)
		{
			try
			{
				DataTable manageinfo = reportconfiginfo.infodataset.Tables["ManageInfo"];
				if(manageinfo==null || manageinfo.Rows.Count==0)
					return;

				//建立条件表达式生成对话框
				TreeContitonExpDlg conntitionexpdlg = new TreeContitonExpDlg();
				conntitionexpdlg.textBox_contition.Text = dlggenexp;

				string dictionname = ""+manageinfo.Rows[0]["BusinessDictID"];

				if(dictionname.Length>0)
					conntitionexpdlg.initFieldsList(dictionname);
				else
					conntitionexpdlg.initFieldsList(currentreport);

				if (conntitionexpdlg.ShowDialog(this) ==DialogResult.OK)
				{
					dlggenexp = conntitionexpdlg.textBox_contition.Text;
				}
			}
			catch (Exception er)
			{
				System.Diagnostics.Debug.Write(er.Message);
			}
		}

		private void groupBox_searchcontition_Resize(object sender, System.EventArgs e)
		{
			if (groupcontitionwidth !=groupBox_searchcontition.Width)
				initSearchFields();		
		}

		private void button_reportexport_Click(object sender, System.EventArgs e)
		{
			if (!IsRunned)
			{
				button_reportexport.Enabled = false;
				return;
			}
		    
			ExportForm _exportForm = new ExportForm();
			_exportForm.documentforexport = this.reportviewer.Document;
			_exportForm.ShowDialog();
		}

		private void button_stop_Click(object sender, System.EventArgs e)
		{
			if( this.currentreport != null)
				this.currentreport.Stop();		
		}

		private void button_reportsetup_Click(object sender, System.EventArgs e)
		{
			if(IsInited)
			{
				RunReportConfigView configdlg = new RunReportConfigView();
				configdlg.initConfigView(currentreportid,reportconfiginfo,currentreport);
				if (configdlg.ShowDialog(this)==DialogResult.OK)
					initRepoert(currentreportid,label_report.Text);
				configdlg.Dispose();
			}
			
		}

		#endregion


		/// <summary>
		/// getReportControl - 获得控件对象
		/// </summary>
		private DataDynamics.ActiveReports.ARControl getReportControl(string control_id)
		{
			//逐个扫描所有控件,查看名称是否是control_id
			foreach(DataDynamics.ActiveReports.Section sec in this.currentreport.Sections)
			{
				foreach(DataDynamics.ActiveReports.ARControl ctl in sec.Controls)
				{
					if (control_id.Equals(ctl.Name))
					{
						//可以新增些控件的配置
						return ctl;
					}
				}
			}

			return null;
		}

		/// <summary>
		/// leftMoveSuccControl - 左移后续的控件对象
		/// </summary>
		private void leftMoveSuccControl(DataDynamics.ActiveReports.ARControl controlobject, bool IsMovePageheaderCtl)
		{
			//ArrayList tobemovedcontrol = new ArrayList();
			
			//从右边开始移动的位置坐标(初始化为一个大数)
			float rightposX = 1000;
			float leftposX = controlobject.Location.X;

			//逐个扫描所有控件,获得左移的开始位置
			foreach(DataDynamics.ActiveReports.Section sec in this.currentreport.Sections)
			{
				//不移动页头脚内的控件
				if (!IsMovePageheaderCtl)
					if ((sec is DataDynamics.ActiveReports.PageHeader)||(sec is DataDynamics.ActiveReports.PageFooter)||(sec is DataDynamics.ActiveReports.ReportHeader)||(sec is DataDynamics.ActiveReports.ReportFooter))
					{
						continue;
					}

				foreach(DataDynamics.ActiveReports.ARControl ctl in sec.Controls)
				{
					if (ctl.Visible==true && ctl.Location.X>leftposX && ctl.Location.X<rightposX)
					{
						rightposX = ctl.Location.X;
					}
				}
			}
			if (rightposX == 1000)//右边没有控件
				return;

			//左移右边的所有控件
			foreach(DataDynamics.ActiveReports.Section sec in this.currentreport.Sections)
			{
				//不移动页头脚内的控件
				if (!IsMovePageheaderCtl)
					if ((sec is DataDynamics.ActiveReports.PageHeader)||(sec is DataDynamics.ActiveReports.PageFooter)||(sec is DataDynamics.ActiveReports.ReportHeader)||(sec is DataDynamics.ActiveReports.ReportFooter))
					{
						continue;
					}

				foreach(DataDynamics.ActiveReports.ARControl ctl in sec.Controls)
				{
					if (ctl.Visible==true && ctl.Location.X>leftposX)
					{
						//ctl.Location.X -= (rightposX-leftposX) ;//左移
						ctl.Left -= (rightposX-leftposX) ;//左移
					}
				}
			}

			return ;
		}


		/// <summary>
		/// upMoveSuccControl - 上移后续的控件对象
		/// </summary>
		private void upMoveSuccControl(DataDynamics.ActiveReports.ARControl controlobject)
		{
			//从下边开始移动的位置坐标(初始化为一个大数)
			float topposY = controlobject.Location.Y;
			float bottomposY = 100000;

			DataDynamics.ActiveReports.Section sec = (DataDynamics.ActiveReports.Section)controlobject.Parent;
			foreach(DataDynamics.ActiveReports.ARControl ctl in sec.Controls)
			{
				if (ctl==controlobject)
					continue;

				if (ctl.Visible==true && ctl.Location.Y>topposY && ctl.Location.Y<bottomposY)
				{
					bottomposY = ctl.Location.Y;
				}

				if (ctl.Visible==true && ctl.Location.Y<topposY && (ctl.Location.Y+ctl.Height)>topposY)
				{
					topposY = ctl.Location.Y+ctl.Height;
				}
			}

			if (bottomposY==100000 || bottomposY<=topposY )//不能移动
				return;

			//上移下边的所有控件
			foreach(DataDynamics.ActiveReports.ARControl ctl in sec.Controls)
			{
				if (ctl==controlobject)
					continue;

				if (ctl.Visible==true && ctl.Location.Y>topposY)
				{
					//ctl.Location.Y -= (bottomposY-topposY);
					ctl.Top -= (bottomposY-topposY);
				}
			}

			return ;
		}

	
		/// <summary>
		/// doShowOrHideControlAction() - 根据用户配置显示或不显示控件对象
		/// </summary>
		private void doShowOrHideControlAction()
		{
			string controlid;
			DataRow configurablerow;
			DataDynamics.ActiveReports.ARControl thiscontrol;
			
			foreach(DataRow configinforow in reportconfiginfo.getConfigInfo().Rows)
			{				
				controlid = "" + configinforow["ControlID"];
				configurablerow = reportconfiginfo.getConfigurableRow(controlid);

				if ("Y".Equals(""+configurablerow["DisplaySelectable"]))
				{
					thiscontrol = getReportControl(controlid);
					if ("N".Equals(""+configinforow["DisplayConfigVal"]))
					{
						thiscontrol.Visible = false;
						if("left".Equals(""+configinforow["SuccCtlMoveDirect"]))
						{
							if ((""+configinforow["MovePageHeaderCtl"]).Equals("Y"))
								leftMoveSuccControl(thiscontrol,true);
							else
								leftMoveSuccControl(thiscontrol,false);

						}
						else if("up".Equals(""+configinforow["SuccCtlMoveDirect"]))
						{
							upMoveSuccControl(thiscontrol);
						}
					}
					else
					{
						thiscontrol.Visible = true;
					}
				}
			}
			
		}

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -