cblFields.Items.Add(new ListItem("编码", "ProblemCode")); cblFields.Items.Add(new ListItem("ID","ProblemID")); cblFields.Items.Add(new ListItem("标题","Title")); cblFields.Items.Add(new ListItem("创建时间","CreateTime")); cblFields.Items.Add(new ListItem("是否关闭","IsClosed")); cblFields.Items.Add(new ListItem("关闭时间","CloseTime")); cblFields.Items.Add(new ListItem("创建用户","CreateUserName")); cblFields.Items.Add(new ListItem("当前处理人","AssignedToUserName")); cblFields.Items.Add(new ListItem("记录数","RecordNum")); cblFields.Items.Add(new ListItem("最后处理人","LastUserName")); cblFields.Items.Add(new ListItem("最后处理时间","LastTime")); //显示预定义的,但每个项目可自定义值的字段 URTracker.BLL.Project project = new Project(_projectID); if (project.EnableProblemCatalog) cblFields.Items.Add(new ListItem("模块","ProblemCatalogName")); if (project.EnableProblemType) cblFields.Items.Add(new ListItem("事务类型", "ProblemTypeName")); cblFields.Items.Add(new ListItem("事务状态", "ProblemStateName")); if (project.EnableProblemPriority) cblFields.Items.Add(new ListItem("事务优先级", "ProblemPriorityName")); if (project.EnableProblemSeverity) cblFields.Items.Add(new ListItem("事务严重级", "ProblemSeverityName")); if (project.EnableProblemDeadline) { cblFields.Items.Add(new ListItem("开始时间","StartTime")); cblFields.Items.Add(new ListItem("结束期限","Deadline")); } foreach (ListItem item in cblFields.Items) { item.Selected = true; }
//User Fields SqlDataReader reader = Project.GetUserFields(_projectID); while(reader.Read()) { switch(reader["FieldType"].ToString()) { case "BigText": case "Text": case "Url": case "Email": case "Integer": case "Float": case "DateTime": case "YesNo": case "MultiSelect": case "Select": cblFields.Items.Add(new ListItem((string)reader["Label"],(string)reader["FieldName"])); break; } } } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // base.OnInit(e); InitializeComponent(); }
/// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.btnExport.Click += new System.EventHandler(this.btnExport_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void btnExport_Click(object sender, System.EventArgs e) { DataSet problemSet = null; if (_isProjectFilter) { //高级查询结果列表 if (Session["CurrentFilter"] == null) { output.Text = "查询时间过长,请重新尝试!"; return; } else { Filter currentFilter = (Filter)Session["CurrentFilter"]; problemSet = currentFilter.RunFilter(_projectID, CurrentUserID); } } else { //事务列表导出 problemSet = _project.GetProblemSetByQueryString(Page.Request, CurrentUserID); } //problemSet.Tables[0].DefaultView.Sort = (string) ViewState["DataSortExpression"];
MyExport exp = new MyExport(); foreach (ListItem item in cblFields.Items) { if (item.Selected) { exp.AddColumn(item.Value, item.Text); } } if (_isProjectFilter) { if (rdoList.Checked) exp.AddDataTable(problemSet.Tables[0], "项目:" + _project.Name + " 高级查询结果列表 共" + problemSet.Tables[0].Rows.Count.ToString() + "个"); else exp.AddDataTable(problemSet.Tables[0], "项目:" + _project.Name + " 高级查询结果列表 共" + problemSet.Tables[0].Rows.Count.ToString() + "个", "<HR>");
///文件参数说明:
/// FilterType 1表示过滤器 2表示单个条件 3表示组合条件; 根据FilterType的值显示选中的tab
/// COOKIE: ProblemListSortExpression,表示事务列表的排序表达式using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Data.SqlClient;using Lealsoft.URTracker.BLL;
using Lealsoft.URTracker.UIL;namespace Lealsoft.URTracker.Web.Pts
{
/// <summary>
/// Summary description for ProblemList.
/// </summary>
public class ProblemListExport : PtsPage
{
protected HtmlForm Form1;
protected System.Web.UI.WebControls.CheckBoxList cblFields;
protected System.Web.UI.WebControls.Button btnExport;
protected System.Web.UI.WebControls.RadioButton rdoList;
protected System.Web.UI.WebControls.RadioButton chkDetailed;
protected System.Web.UI.WebControls.RadioButtonList rblFormat;
protected Lealsoft.Controls.LinkBar lnkBar;
protected System.Web.UI.WebControls.Label output;
//private string pageName = "ProblemList.aspx"; //protected Project _project = null;
private bool _isProjectFilter = false; //是否是高级查询结果导出
private void Page_Load(object sender, System.EventArgs e)
{
_isProjectFilter = (Request["FilterType"] == "CurrentFilter");
if (!Page.IsPostBack)
{
TrackerIdentity id = (TrackerIdentity)Context.User.Identity;
if (id.UserState == (int)UserStateCodes.Limited)
GoToErrorPage("权限错误!", "您是受限用户,不允许查看此页面"); bool bAdminProject = CheckUserProjectPermission(WorkgroupPermissions.AdminProject, false);
if (_project.OnlyViewOwnProblem && !bAdminProject)
GoToErrorPage("权限错误!", "您是受限用户,不允许查看此页面"); lnkBar.AddLink("项目列表", "ProjectList.aspx"); if (_isProjectFilter)
lnkBar.AddLink(_project.Name, "ProjectFilters.aspx?project=" + _projectID.ToString());
else
lnkBar.AddLink(_project.Name, "ProblemList.aspx?" + Request.QueryString.ToString()); lnkBar.AddLink("事务列表导出", "#");
lnkBar.SetHelpFile("problemlistexport"); lnkBar.SetIconPath("~/Images/problem_list.gif"); BindFields();
}
}
private void BindFields()
{
cblFields.Items.Clear(); //显示每个项目都具有的,其值具有全局性的字段
cblFields.Items.Add(new ListItem("编码", "ProblemCode"));
cblFields.Items.Add(new ListItem("ID","ProblemID"));
cblFields.Items.Add(new ListItem("标题","Title"));
cblFields.Items.Add(new ListItem("创建时间","CreateTime"));
cblFields.Items.Add(new ListItem("是否关闭","IsClosed"));
cblFields.Items.Add(new ListItem("关闭时间","CloseTime"));
cblFields.Items.Add(new ListItem("创建用户","CreateUserName"));
cblFields.Items.Add(new ListItem("当前处理人","AssignedToUserName"));
cblFields.Items.Add(new ListItem("记录数","RecordNum"));
cblFields.Items.Add(new ListItem("最后处理人","LastUserName"));
cblFields.Items.Add(new ListItem("最后处理时间","LastTime"));
//显示预定义的,但每个项目可自定义值的字段
URTracker.BLL.Project project = new Project(_projectID);
if (project.EnableProblemCatalog)
cblFields.Items.Add(new ListItem("模块","ProblemCatalogName"));
if (project.EnableProblemType)
cblFields.Items.Add(new ListItem("事务类型", "ProblemTypeName"));
cblFields.Items.Add(new ListItem("事务状态", "ProblemStateName"));
if (project.EnableProblemPriority)
cblFields.Items.Add(new ListItem("事务优先级", "ProblemPriorityName"));
if (project.EnableProblemSeverity)
cblFields.Items.Add(new ListItem("事务严重级", "ProblemSeverityName"));
if (project.EnableProblemDeadline)
{
cblFields.Items.Add(new ListItem("开始时间","StartTime"));
cblFields.Items.Add(new ListItem("结束期限","Deadline"));
}
foreach (ListItem item in cblFields.Items)
{
item.Selected = true;
}
//User Fields
SqlDataReader reader = Project.GetUserFields(_projectID);
while(reader.Read())
{
switch(reader["FieldType"].ToString())
{
case "BigText":
case "Text":
case "Url":
case "Email":
case "Integer":
case "Float":
case "DateTime":
case "YesNo":
case "MultiSelect":
case "Select":
cblFields.Items.Add(new ListItem((string)reader["Label"],(string)reader["FieldName"]));
break;
}
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
base.OnInit(e);
InitializeComponent();
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.btnExport.Click += new System.EventHandler(this.btnExport_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void btnExport_Click(object sender, System.EventArgs e)
{
DataSet problemSet = null;
if (_isProjectFilter)
{
//高级查询结果列表
if (Session["CurrentFilter"] == null)
{
output.Text = "查询时间过长,请重新尝试!";
return;
}
else
{
Filter currentFilter = (Filter)Session["CurrentFilter"];
problemSet = currentFilter.RunFilter(_projectID, CurrentUserID);
}
}
else
{
//事务列表导出
problemSet = _project.GetProblemSetByQueryString(Page.Request, CurrentUserID);
} //problemSet.Tables[0].DefaultView.Sort = (string) ViewState["DataSortExpression"];
MyExport exp = new MyExport();
foreach (ListItem item in cblFields.Items)
{
if (item.Selected)
{
exp.AddColumn(item.Value, item.Text);
}
} if (_isProjectFilter)
{
if (rdoList.Checked)
exp.AddDataTable(problemSet.Tables[0], "项目:" + _project.Name + " 高级查询结果列表 共" + problemSet.Tables[0].Rows.Count.ToString() + "个");
else
exp.AddDataTable(problemSet.Tables[0], "项目:" + _project.Name + " 高级查询结果列表 共" + problemSet.Tables[0].Rows.Count.ToString() + "个", "<HR>");
}
else
{
if (rdoList.Checked)
exp.AddDataTable(problemSet.Tables[0], "项目:" + _project.Name + " 列表:" + Request["Title"] + " 共" + problemSet.Tables[0].Rows.Count.ToString() + "个");
else
exp.AddDataTable(problemSet.Tables[0], "项目:" + _project.Name + " 列表:" + Request["Title"] + " 共" + problemSet.Tables[0].Rows.Count.ToString() + "个", "<HR>");
}
switch (rblFormat.SelectedValue.ToLower())
{
case "xls":
exp.WriteToClient(Response, "ProblemList.xls", "application/vnd.ms-excel");
break;
case "doc":
exp.WriteToClient(Response, "ProblemList.doc", "application/vnd.ms-word");
break;
case "htm":
exp.WriteToClient(Response, "ProblemList.htm", "text/html");
break;
case "xml":
break;
}
}
}
}