📄 runrepoertviewctl.cs
字号:
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 + -