您的位置:首页 > 其它

如何动态添加模板列,且模板列中动态写入lable的ID?

2010-08-12 17:11 381 查看

废话不多说,代码端上来:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OracleClient;
using Syncfusion.XlsIO;
/// <summary>
/// 时间分组话务统计报表
/// </summary>
public partial class report_Report4 : System.Web.UI.Page
{
TemplateField tf;
public string _kindID;
public string KindID
{
get
{
return _kindID;
}
set
{
_kindID = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{

}
public void BuildColumn()
{
using (OracleConnection connection = new OracleConnection(ConfigurationManager.ConnectionStrings["DVTeConnectionString"].ToString()))
{
string sql = " select top 1 from dc_callskind";
sql += " order by Kind";
OracleCommand cmd = connection.CreateCommand();
cmd.CommandText = sql;
connection.Open();
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
tf = new TemplateField();
this.KindID = dr["KIND"].ToString();
myTemplate aa = new myTemplate();
tf.HeaderText = dr["KINDNAME"].ToString();
tf.ItemTemplate = aa;

this.gridItems.Columns.Add(tf);

}

}

}
private DataTable MakeSpansTable()
{
// Create a new DataTable titled 'Names.'
DataTable namesTable = new DataTable("TimeSpan");

DataColumn fNameColumn = new DataColumn();
fNameColumn.DataType = System.Type.GetType("System.String");
fNameColumn.ColumnName = "Span";
fNameColumn.DefaultValue = "";
namesTable.Columns.Add(fNameColumn);

fNameColumn = new DataColumn();
fNameColumn.DataType = System.Type.GetType("System.String");
fNameColumn.ColumnName = "ToTal";
fNameColumn.DefaultValue = "";
namesTable.Columns.Add(fNameColumn);

return namesTable;
}

protected void gridItems_RowDataBound(object sender, GridViewRowEventArgs e)
{
Label lb;
if (e.Row.RowType == DataControlRowType.DataRow)
{
int total = 0;
using (OracleConnection connection = new OracleConnection(ConfigurationManager.ConnectionStrings["DVTeConnectionString"].ToString()))
{
string sql = " select * from dc_callskind";
sql += " where dc_callskind.CANUSE=0";
sql += " order by Kind";
OracleCommand cmd = connection.CreateCommand();
cmd.CommandText = sql;
connection.Open();
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
lb = (Label)e.Row.FindControl("lb_"+dr["KIND"].ToString());
lb.Text = this.GetCount(dr["KIND"].ToString(),e.Row.Cells[0].Text);
total += int.Parse(lb.Text);
}
}

e.Row.Cells[1].Text = total.ToString();

}
}
public string GetCount(string kind,string span)
{
string rtn;
string beginTiemSpan = span.ToString() + " 00:00:00";
string endTiemSpan = span.ToString() + " 23:59:59";
using (OracleConnection connection = new OracleConnection(ConfigurationManager.ConnectionStrings["DVTeConnectionString"].ToString()))
{
connection.Open();
OracleCommand cmd = connection.CreateCommand();
cmd.CommandText = "select count(s.kind) from dc_callsanalysis s where s.kind="+kind;
cmd.CommandText += " AND s.calltime between TO_DATE('" + beginTiemSpan + "','yyyy-mm-dd hh24:mi:ss') and ";
cmd.CommandText += " TO_DATE('" + endTiemSpan + "','yyyy-mm-dd hh24:mi:ss')";
if (((System.Data.OracleClient.OracleNumber)(cmd.ExecuteOracleScalar())).IsNull == true)
{
rtn = "0";
}
else
{
rtn = cmd.ExecuteOracleScalar().ToString();

}

}
return rtn;
}
protected void BtnStatistic_Click(object sender, EventArgs e)
{
this.BindByDay();
// BuildColumn();
}
private void BindByDay()
{
DataTable table;
DataRow row;
table = MakeSpansTable();
string value = "";
TimeSpan tp;
//string shorDate = "";
if ((!string.IsNullOrEmpty(this.wdate_visitTimeStart.Value) && (!string.IsNullOrEmpty(this.wdate_visitTimeEnd.Value) && (Convert.ToDateTime(this.wdate_visitTimeStart.Value) < Convert.ToDateTime(this.wdate_visitTimeEnd.Value)))))
{
DateTime dt_begin = Convert.ToDateTime(this.wdate_visitTimeStart.Value);
DateTime dt_end = Convert.ToDateTime(this.wdate_visitTimeEnd.Value);
tp = dt_end - dt_begin;
if (tp.Days > 1)
{

for (int d = 0; d < tp.Days; d++)
{
DateTime time = Convert.ToDateTime(this.wdate_visitTimeStart.Value) + TimeSpan.FromDays(d);
value = time.ToShortDateString();
row = table.NewRow();
row["Span"] = value;
table.Rows.Add(row);

}
}
}

///<--------Rebuild these TemplateFields 防止页面刷新的时候,丢失模板列组!
if (this.gridItems.Columns.Count > 2)
{
int count = this.gridItems.Columns.Count-2;
for (int i = 0; i < count; i++)
{
this.gridItems.Columns.RemoveAt(2);
}
}
///-------->Rebuild these TemplateFields

if (this.gridItems.Columns.Count == 2)
{
using (OracleConnection connection = new OracleConnection(ConfigurationManager.ConnectionStrings["DVTeConnectionString"].ToString()))
{
string sql = " select * from dc_callskind";
sql += " where dc_callskind.CANUSE=0";
sql += " order by Kind"; //模板列头皆来自这个表
//string sql = "select * from (select rownum rn,a.* from dc_callskind a) where rn <=1"; //--juse like sql server statement:selet top 1
OracleCommand cmd = connection.CreateCommand();
cmd.CommandText = sql;
connection.Open();
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
tf = new TemplateField();
this.KindID = dr["KIND"].ToString();
myTemplate aa = new myTemplate(this.KindID); 构造函数的妙用!

tf.HeaderText = dr["KINDNAME"].ToString();
tf.ItemTemplate = aa;

this.gridItems.Columns.Add(tf);

}

}

}
this.gridItems.DataSource = table.DefaultView;
this.gridItems.DataBind();

}
protected void BtnExcel_Click(object sender, EventArgs e)
{
if (this.gridItems.RecordCount != 0)
{
string path = Server.MapPath("~/模板/时间分组话务统计报表.xls");
string sFile = HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath) + "//" + DateTime.Now.ToString("yyyyMMddHHmmssfffffff") + "_RenGongHuaWu.xls";
ExcelEngine excelEngine = new ExcelEngine();
IApplication application = excelEngine.Excel;
IWorkbook workbook = excelEngine.Excel.Workbooks.Open(path);
IWorksheet sheet1 = workbook.Worksheets[0];
sheet1.Range["A3"].Value2 = "开始日期:" + this.wdate_visitTimeStart.Value + "" + " 结束日期:" + this.wdate_visitTimeEnd.Value;
string[,] arr=new string[26,2];
string[,] arr2 = new string[,] { { "A", "0" }, { "B", "1" }, { "C", "2" }, { "D", "3" }, { "E", "4" }, { "F", "5" }, { "G", "6" }, { "H", "7" }, { "I", "8" }, { "J", "9" }, { "K", "10" }, { "L", "11" },{"M","12"},{"N","13"},{"O","14"},{"P","15"},{"Q","16"},{"R","17"},{"S","18"},{"T","19"},{"U","20"},{"V","21"},{"W","22"},{"X","23"},{"Y","24"},{"Z","25"}};

for (int i = 0; i < this.gridItems.Columns.Count; i++)
{

sheet1.Range[arr2[i,0].ToString() +"5"].Value2 = this.gridItems.Columns[i].HeaderText;
sheet1.Range[arr2[i, 0].ToString() + "5"].CellStyle = sheet1.Range[arr2[0, 0].ToString() + "5"].CellStyle;

}
for (int i = 0; i < this.gridItems.RecordCount; i++)
{
sheet1.Range["A" + Convert.ToString((i + 6))].Value2 = this.gridItems.Rows[i].Cells[0].Text;
sheet1.Range["B" + Convert.ToString((i + 6))].Value2 = this.gridItems.Rows[i].Cells[1].Text;

// Lb_GetCount_Queuetime = (Label)this.gridItems.Rows[i].FindControl("Lb_GetCount_Queuetime");
// Lb_GetCount_Connect = (Label)this.gridItems.Rows[i].FindControl("Lb_GetCount_Connect");
// Lb_GetPercent_connect = (Label)this.gridItems.Rows[i].FindControl("Lb_GetPercent_connect");
// Lb_GetCount_lost = (Label)this.gridItems.Rows[i].FindControl("Lb_GetCount_lost");
// Lb_GetPercent_ConnectSecond20 = (Label)this.gridItems.Rows[i].FindControl("Lb_GetPercent_ConnectSecond20");
// Lb_GetCount_QueuetimeWait = (Label)this.gridItems.Rows[i].FindControl("Lb_GetCount_QueuetimeWait");
// Lb_GetCount_QueuetimeGuaJi = (Label)this.gridItems.Rows[i].FindControl("Lb_GetCount_QueuetimeGuaJi");
// Lb_GetLenth_QueuetimeToConnect = (Label)this.gridItems.Rows[i].FindControl("Lb_GetLenth_QueuetimeToConnect");
// Lb_GetLenth_QueuetimeToNoConnect = (Label)this.gridItems.Rows[i].FindControl("Lb_GetLenth_QueuetimeToNoConnect");
// Lb_GetAVERAGELenth_RingToConnect = (Label)this.gridItems.Rows[i].FindControl("Lb_GetAVERAGELenth_RingToConnect");
// Lb_GetAVERAGELenth_Connect = (Label)this.gridItems.Rows[i].FindControl("Lb_GetAVERAGELenth_Connect");

// sheet1.Range["B" + Convert.ToString((i + 6))].Value2 = Lb_GetCount_Queuetime.Text;
// sheet1.Range["C" + Convert.ToString((i + 6))].Value2 = Lb_GetCount_Connect.Text.Replace(" ", "");
// sheet1.Range["D" + Convert.ToString((i + 6))].Value2 = Convert.ToDouble(Lb_GetPercent_connect.Text.Replace(" ", "").Replace("%", "")) / 100;
// sheet1.Range["E" + Convert.ToString((i + 6))].Value2 = Lb_GetCount_lost.Text.Replace(" ", "");

// sheet1.Range["F" + Convert.ToString((i + 6))].Value2 = Convert.ToDouble(Lb_GetPercent_ConnectSecond20.Text.Replace(" ", "").Replace("%", "")) / 100;
// sheet1.Range["G" + Convert.ToString((i + 6))].Value2 = Lb_GetCount_QueuetimeWait.Text.Replace(" ", "");

// sheet1.Range["H" + Convert.ToString((i + 6))].Value2 = Lb_GetCount_QueuetimeGuaJi.Text.Replace(" ", "");

// sheet1.Range["I" + Convert.ToString((i + 6))].Value2 = Lb_GetLenth_QueuetimeToConnect.Text.Replace(" ", "");

// sheet1.Range["J" + Convert.ToString((i + 6))].Value2 = Lb_GetLenth_QueuetimeToNoConnect.Text.Replace(" ", "");

// sheet1.Range["K" + Convert.ToString((i + 6))].Value2 = Lb_GetAVERAGELenth_RingToConnect.Text.Replace(" ", "");

// sheet1.Range["L" + Convert.ToString((i + 6))].Value2 = Lb_GetAVERAGELenth_Connect.Text.Replace(" ", "");

}

//sheet1.Range["A" + Convert.ToString((this.gridItems.RecordCount + 6))].Value2 = "合计";
//sheet1.Range["B" + Convert.ToString((this.gridItems.RecordCount + 6))].Value2 = "=SUM(B6:B" + (this.gridItems.RecordCount + 5).ToString() + ")";
//sheet1.Range["C" + Convert.ToString((this.gridItems.RecordCount + 6))].Value2 = "=SUM(C6:C" + (this.gridItems.RecordCount + 5).ToString() + ")";
//sheet1.Range["D" + Convert.ToString((this.gridItems.RecordCount + 6))].Value2 = "=AVERAGE(D6:D" + (this.gridItems.RecordCount + 5).ToString() + ")";
//sheet1.Range["E" + Convert.ToString((this.gridItems.RecordCount + 6))].Value2 = "=SUM(E6:E" + (this.gridItems.RecordCount + 5).ToString() + ")";
//sheet1.Range["F" + Convert.ToString((this.gridItems.RecordCount + 6))].Value2 = "=AVERAGE(F6:F" + (this.gridItems.RecordCount + 5).ToString() + ")";
//sheet1.Range["G" + Convert.ToString((this.gridItems.RecordCount + 6))].Value2 = "=SUM(G6:G" + (this.gridItems.RecordCount + 5).ToString() + ")";
//sheet1.Range["H" + Convert.ToString((this.gridItems.RecordCount + 6))].Value2 = "=SUM(H6:H" + (this.gridItems.RecordCount + 5).ToString() + ")";
//sheet1.Range["I" + Convert.ToString((this.gridItems.RecordCount + 6))].Value2 = "=AVERAGE(I6:I" + (this.gridItems.RecordCount + 5).ToString() + ")";
//sheet1.Range["J" + Convert.ToString((this.gridItems.RecordCount + 6))].Value2 = "=AVERAGE(J6:J" + (this.gridItems.RecordCount + 5).ToString() + ")";
//sheet1.Range["K" + Convert.ToString((this.gridItems.RecordCount + 6))].Value2 = "=AVERAGE(K6:K" + (this.gridItems.RecordCount + 5).ToString() + ")";
//sheet1.Range["L" + Convert.ToString((this.gridItems.RecordCount + 6))].Value2 = "=AVERAGE(L6:L" + (this.gridItems.RecordCount + 5).ToString() + ")";

workbook.SaveAs(sFile, ExcelSaveType.SaveAsXLS, HttpContext.Current.Response, ExcelDownloadType.PromptDialog);
excelEngine.ThrowNotSavedOnDestroy = false;
excelEngine.Dispose();
}
}
protected void gridItems_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gridItems.PageIndex = e.NewPageIndex;
//this.Bind();
}
///
//select count(s.kind),s.kind from dc_callsanalysis s,dc_callskind k where s.kind=k.kind group by s.Kind
}
public class myTemplate : ITemplate
{
ArrayList arr;
public string _kind;
public myTemplate()
{

}
public myTemplate(string kind)
{
this._kind = kind;
}
public void InstantiateIn(Control container)
{
Label lb = new Label();
lb.ID = "lb_" + this._kind;
container.Controls.Add(lb);

}
public void InstantiateIn(Control container, string kind)
{

Label lb = new Label();
lb.ID = "lb_" + kind;
//lb.DataBinding += new EventHandler(this.BindData);
//lb.Text = GetCount();
container.Controls.Add(lb);
}

private string GetLbId()
{
arr = new ArrayList();
using (OracleConnection connection = new OracleConnection(ConfigurationManager.ConnectionStrings["DVTeConnectionString"].ToString()))
{
string sql = " select * from dc_callskind";
sql += " order by Kind";
OracleCommand cmd = connection.CreateCommand();
cmd.CommandText = sql;
connection.Open();
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
arr.Add(dr["kind"]);
}
}
return arr[0].ToString() ;
}
public void BindData(object sender, EventArgs e)
{
//Label lbl = (Label)sender;
//lbl.Text = "Wait Data";
//string test2 = DataBinder.Eval(((GridViewRow)lbl.NamingContainer).DataItem, "Span").ToString();
// Label lbl = (Label)sender;
// if( DataBinder.Eval( ((DataGridItem)lbl.NamingContainer).DataItem , "HasPayPoint" ).ToString() == "True" ){
// lbl.Text = DataBinder.Eval( ((DataGridItem)lbl.NamingContainer).DataItem , "UserName" ) + "<img src='" + FC.CMS.Utility.Path.ApplicationFileHttpUrl + "modules/auto/GroupBuy/IsMember.gif' alt='已支付保证金会员'>";
// }
// else
// lbl.Text = DataBinder.Eval( ((DataGridItem)lbl.NamingContainer).DataItem , "UserName" ).ToString();
//}

}

public string GetCount()
{
string rtn;
using (OracleConnection connection = new OracleConnection(ConfigurationManager.ConnectionStrings["DVTeConnectionString"].ToString()))
{
connection.Open();
OracleCommand cmd = connection.CreateCommand();
cmd.CommandText = "select count(s.kind) from dc_callsanalysis s where s.kind=1";// +report_Report4.k;
if (((System.Data.OracleClient.OracleNumber)(cmd.ExecuteOracleScalar())).IsNull == true)
{
rtn = "0";
}
else
{
rtn = cmd.ExecuteOracleScalar().ToString();

}

}
return rtn;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: