#region
using System;
using System.Collections;
using System.Windows.Forms;
using CSFrameworkV5.Common;
using CSFrameworkV5.Core;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Views.Grid;
#endregion
namespace CSFrameworkV5.Library
{
public partial class frmExportGridData : frmBaseDialog
{
private Hashtable _columnVisibleState;
private GridView _gv;
private frmExportGridData()
{
InitializeComponent();
_columnVisibleState = new Hashtable();
}
private void btnCancel_Click(object sender, EventArgs e)
{
Close();
}
private void btnCheckAll_Click(object sender, EventArgs e)
{
chkListColumns.CheckAll();
}
private void btnOk_Click(object sender, EventArgs e)
{
if (chkListColumns.CheckedItems.Count < 1)
{
Msg.Warning("请勾选要导出的栏位!");
return;
}
try
{
var dlg = new SaveFileDialog();
if (cmbFileFormat.SelectedIndex == 0)
dlg.Filter = cmbFileFormat.Text + "|*.xls";
if (cmbFileFormat.SelectedIndex == 1)
dlg.Filter = cmbFileFormat.Text + "|*.xlsx";
if (cmbFileFormat.SelectedIndex == 2)
dlg.Filter = cmbFileFormat.Text + "|*.pdf";
if (cmbFileFormat.SelectedIndex == 3)
dlg.Filter = cmbFileFormat.Text + "|*.rtf";
if (cmbFileFormat.SelectedIndex == 4)
dlg.Filter = cmbFileFormat.Text + "|*.html";
if (dlg.ShowDialog() == DialogResult.OK)
{
_gv.BeginUpdate();
HideColumn(true);
btnOk.Enabled = false;
frmWaitingEx.ShowMe(this);
if (cmbFileFormat.SelectedIndex == 0)
_gv.ExportToXls(dlg.FileName);
if (cmbFileFormat.SelectedIndex == 1)
_gv.ExportToXlsx(dlg.FileName);
if (cmbFileFormat.SelectedIndex == 2)
_gv.ExportToPdf(dlg.FileName);
if (cmbFileFormat.SelectedIndex == 3)
_gv.ExportToRtf(dlg.FileName);
if (cmbFileFormat.SelectedIndex == 4)
_gv.ExportToHtml(dlg.FileName);
frmWaitingEx.HideMe(this);
HideColumn(false);
_gv.EndUpdate();
Msg.ShowInformation("导出文件成功!\r\n" + dlg.FileName);
}
btnOk.Enabled = true;
}
catch (Exception ex)
{
frmWaitingEx.HideMe(this);
Msg.ShowException(ex);
btnOk.Enabled = true;
}
}
private void btnUnCheckAll_Click(object sender, EventArgs e)
{
chkListColumns.UnCheckAll();
}
///
/// 功能入口
///
///
public static void DoExport(GridView gv)
{
var form = new frmExportGridData();
form._gv = gv;
form.LoadGridColumns(gv, new string[] { });
form.ShowDialog();
}
public static void DoExport(GridView gv, string[] columnFields)
{
var form = new frmExportGridData();
form._gv = gv;
form.LoadGridColumns(gv, columnFields);
form.ShowDialog();
}
private void frmExportGridData_FormClosing(object sender,
FormClosingEventArgs e)
{
HideColumn(false);
}
private void frmExportGridData_Load(object sender, EventArgs e)
{
cmbFileFormat.SelectedIndex = 0; //预设导出Excel
}
private void HideColumn(bool isHide)
{
//隐藏没有勾选的栏位
if (isHide)
{
foreach (CheckedListBoxItem item in chkListColumns.Items)
_gv.Columns[item.Value.ToStringEx()].Visible =
item.CheckState == CheckState.Checked;
}
else
{
//还原栏位显示状态
if (_columnVisibleState.Count > 0)
foreach (GridColumn col in _gv.Columns)
col.Visible = (bool)_columnVisibleState[col.FieldName];
}
}
private void LoadGridColumns(GridView view, string[] columnFields)
{
chkListColumns.Items.Clear();
var check = false;
//加载栏位列表.
foreach (GridColumn col in view.Columns)
{
check = Array.IndexOf(columnFields, col.FieldName) >= 0;
chkListColumns.Items.Add(col.FieldName, col.Caption,
CheckState.Unchecked, true);
if (!_columnVisibleState.ContainsKey(col.FieldName))
_columnVisibleState.Add(col.FieldName,
col.Visible); //保存栏位状态
}
}
}
}