1
yhj
2024-07-24 5e5d945e91568b973faa27d8ab0bcef99fc4a6c5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
#region
 
using System;
using System.Data;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using CSFrameworkV5.Business;
using CSFrameworkV5.Common;
using CSFrameworkV5.Core;
using CSFrameworkV5.Library;
using CSFrameworkV5.Library.CommonClass;
using CSFrameworkV5.Models;
 
#endregion
 
namespace CSFrameworkV5.SystemModule
{
    /// <summary>
    ///     Reports的资料管理窗体,由代码生成器(Code Generator)自动生成
    /// </summary>
    public partial class frmReports : frmBaseDataDictionary
    {
        private bllReports _BLLInstance;
 
        public frmReports()
        {
            InitializeComponent();
        }
 
        //设计报表
        private void btnDesign_Click(object sender, EventArgs e)
        {
            var tmpFile = "";
 
            try
            {
                var bs = (byte[])_BLLInstance.DataBinderRow[sys_Reports.Data];
 
                if (bs == null) bs = new byte[] { };
 
                //写入到临时文件
                tmpFile = Path.Combine(Application.StartupPath + "\\Reports",
                    DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".frx");
                File.WriteAllBytes(tmpFile, bs);
 
                //打开报表设计器
                ReportLib.DesignReport(tmpFile, bs.Length == 0);
 
                //保存报表数据
                _BLLInstance.DataBinderRow[sys_Reports.Data] =
                    File.ReadAllBytes(tmpFile);
            }
            catch (Exception ex)
            {
                Msg.Warning(ex.Message);
            }
 
            //删除临时文件
            if (File.Exists(tmpFile)) File.Delete(tmpFile);
        }
 
        private void btnEmpty_Click(object sender, EventArgs e)
        {
            ClearContainerEditorText(pnlSearch);
        }
 
        private void btnQuery_Click(object sender, EventArgs e)
        {
            //搜索数据     
            try
            {
                frmWaitingEx.ShowMe(this);
                var dt = _BLLInstance.Query(
                    ConvertEx.ToString(txt_ReportID.EditValue),
                    ConvertEx.ToString(txt_ReportTitle.EditValue));
                DoBindingSummaryGrid(dt); //绑定主表的Grid
                ShowSummaryPage(true); //显示Summary页面.
            }
            finally
            {
                frmWaitingEx.HideMe(this);
            }
 
            if (gvSummary.RowCount == 0) Msg.Warning("没有找到数据!");
        }
 
        private void btnSaveAs_Click(object sender, EventArgs e)
        {
            AssertFocusedRow();
            var bs = _BLLInstance.DataBinderRow[sys_Reports.Data] as byte[];
 
            if (bs != null && bs.Length > 0)
            {
                var dlg = new SaveFileDialog();
                dlg.Filter = ".NET FastReport Files|*.frx";
                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    File.WriteAllBytes(dlg.FileName, bs);
                    Msg.ShowInformation("保存成功!");
                }
            }
            else
            {
                Msg.Warning("没有报表内容!");
            }
        }
 
        private void btnUpload_Click(object sender, EventArgs e)
        {
            var dlg = new OpenFileDialog();
            dlg.Filter = ".NET FastReport Files|*.frx";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                var bs = File.ReadAllBytes(dlg.FileName);
 
                if (string.IsNullOrEmpty(txtReportID.Text))
                    _BLLInstance.DataBinderRow[sys_Reports.ReportID] =
                        Path.GetFileName(dlg.FileName);
 
                if (string.IsNullOrEmpty(txtReportTitle.Text))
                    _BLLInstance.DataBinderRow[sys_Reports.ReportTitle] =
                        Path.GetFileName(dlg.FileName);
 
                _BLLInstance.DataBinderRow[sys_Reports.Data] = bs;
 
                ShowSize(bs);
            }
        }
 
        protected override void
            ButtonStateChanged(UpdateType currentState) //按钮状态改变时触发的事件
        {
            base.ButtonStateChanged(currentState);
 
            txtReportID.Properties.ReadOnly = true; //修改状态下不允许修改主键的数据
            txtLastUpdateDate.Properties.ReadOnly = true; //禁止修改
            txtLastUpdatedBy.Properties.ReadOnly = true; //禁止修改
 
            btnUpload.Enabled = IsAddOrEditMode;
            btnDesign.Enabled = IsAddOrEditMode;
            //btnSaveAs.Enabled = this.IsAddOrEditMode;
 
            txxtFlag.Properties.ReadOnly = true;
        }
 
        public override void DoAdd(IButtonInfo sender)
        {
            base.DoAdd(sender);
 
            if (IsAddMode) SetEditorBindingValue(txtReportID, "*自动生成*", true);
        }
 
        /// <summary>
        ///     绑定修改页面中所有输入框的数据源
        /// </summary>
        /// <param name="summary">数据源</param>
        protected override void DoBindingSummaryEditor(DataTable summary)
        {
            DoBindingEditorPanel(pcDetailEditor, summary);
 
            var bs = _BLLInstance.DataBinderRow[sys_Reports.Data] as byte[];
            ShowSize(bs);
        }
 
        public override void DoSave(IButtonInfo sender)
        {
            //调用基类提供的保存方法
            base.DoSaveEx(sender);
        }
 
        private void frmReports_Load(object sender, EventArgs e)
        {
            InitializeForm(); //自定义初始化操作
        }
 
        protected override void InitializeForm()
        {
            _SummaryView =
                new DevGridView(
                    gvSummary); //实例化数据主视图,此接口可支持不同的主视图,比如Grid,TreeList.
            //_ActiveEditor = txtReportID;//进入修改状态,显示第一个焦点的输入框,可以不设置
            //_KeyEditor = txtReportID;//主键字段输入框,可以不设置
            _DetailGroupControl = pcDetailEditor; //修改页面所有输入框的容器
            _BLL = new bllReports(); //实例化基类业务逻辑层
            _BLLInstance = _BLL as bllReports; //本窗体的业务层对象引用
            base.InitializeForm();
 
            DataBinderTools.BoundCheckEdit(repositoryItemCheckEdit1);
        }
 
        private void ShowSize(byte[] bs)
        {
            if (bs == null)
            {
                txxtFlag.Text = "您没有选择报表哦~~";
                txxtFlag.Properties.Appearance.ForeColor = Color.DarkRed;
            }
            else
            {
                if (bs.Length < 1024)
                {
                    txxtFlag.Text = bs.Length.ToStringEx() + "字节(bytes)";
                }
                else
                {
                    var i = bs.Length / 1024;
                    txxtFlag.Text = i.ToStringEx() + "KB";
                }
 
                txxtFlag.Properties.Appearance.ForeColor = Color.Black;
            }
        }
 
        protected override void ShowSummary()
        {
            //重写此方法打开窗体时不显示任何数据
        }
 
        //检查主表数据完整性
        protected override bool ValidatingData()
        {
            //if (ConvertEx.ToString(txtReportID.EditValue).Trim() == String.Empty)
            //{
            //    Msg.Warning("ReportID不能为空!");
            //    txtReportID.Focus();
            //    return false;
            //}
 
            if (ConvertEx.ToString(txtReportTitle.EditValue).Trim() ==
                string.Empty)
            {
                Msg.Warning("ReportTitle不能为空!");
                txtReportTitle.Focus();
                return false;
            }
 
            return true;
        }
 
        #region 自动生成的事件或方法的主体部份
 
        #endregion
    }
}