110,534
社区成员
发帖
与我相关
我的任务
分享
public DataTable dt = new DataTable();//用来保存读取的数据
protected SqlCommon conn = new SqlCommon();
public string strKBH = string.Empty;
public string strDate = string.Empty;
public string strKMC = string.Empty;
public bool bTime=false;//用来判断时间是否超过当前的日期
public int iHangNum = 0;//用来保存行数
public List<string> listLie = new List<string>();//用来保存标题列
public List<string> listHeaderName = new List<string>();//用来保存标头
public Dictionary<string, List<string>> HasList = new Dictionary<string, List<string>>();//保存表内容
protected void Page_Load(object sender, EventArgs e)
{
strKBH = Request.QueryString["kbh"];
strDate = Request.QueryString["date"];
strKMC= Request.QueryString["kmc"];
listHeaderName = this.getHeaderName();
HasList = this.getDateTable();
BindGrid();
}
#region 获得DataGrid的标头,将表头的内容保存到泛型List<string>中
public List<string> getHeaderName()
{
List<string> listHeaderName = new List<string>();
try
{
listHeaderName.Add("时间");
string strSql = "select distinct[SensorNum] from RealTimeHistory where MineNum='" + strKBH + "'";
conn.open();
DataSet myDs = conn.ExceDS(strSql);
for (int i = 0; i < myDs.Tables[0].Rows.Count; i++)
{
listLie.Add(myDs.Tables[0].Rows[i][0].ToString().Trim());
try
{
string sSql = "select SensorName from Sensor where MineNum='" + strKBH + "' and SensorNum='" + myDs.Tables[0].Rows[i][0].ToString().Trim() + "'";
DataSet myDss = conn.ExceDS(sSql);
string sName = myDs.Tables[0].Rows[i][0].ToString().Trim() + "<br>" + myDss.Tables[0].Rows[0][0].ToString().Trim();
listHeaderName.Add(sName);
}
catch
{
string sName = myDs.Tables[0].Rows[i][0].ToString().Trim() + "<br>" + "未设置";
listHeaderName.Add(sName);
}
}
}
catch (Exception e)
{
Response.Write("在取标头的时候出现错误!" + e.Message);
}
finally
{
conn.close();
}
return listHeaderName;
}
#endregion
#region 建立Datagrid控件的数据源
ICollection CreateDataSource()
{
try
{
DataRow dr;
foreach (string sHeader in listHeaderName)
{
dt.Columns.Add(sHeader, typeof(string));
}
foreach (KeyValuePair<string, List<string>> kvp in HasList)
{
dr = dt.NewRow();
dr[0] = kvp.Key.ToString();
List<string> listValue = (List<string>)kvp.Value;
int i = 0;
foreach (string sValue in listValue)
{
i = i + 1;
dr[i] = sValue;
}
dt.Rows.Add(dr);
}
}
catch
{
}
DataView dv = new DataView(dt);
return dv;
}
#endregion
#region 获得每个时间列所对应的值
public string getHangInfo(Dictionary<string, ArrayList> oscar, string slieTime, string skey)
{
string sHang = string.Empty;
try
{
ArrayList listA = (ArrayList)oscar[skey];
for (int i = 0; i < listA.Count; i++)
{
ArrayList listB = (ArrayList)listA[i];
DateTime timeA = Convert.ToDateTime(listB[0].ToString().Trim());
DateTime timeB = Convert.ToDateTime(slieTime);
DateTime thisTime = this.TimeAdd(listB[0].ToString().Trim(), listB[3].ToString().Trim());
if ((timeB >= timeA) && (timeB <= thisTime))
{
if (bTime == true)
{
sHang = "0";
}
else
{
if (listB[1].ToString().Trim() == "0" && listB[2].ToString().Trim() == "0")
{
sHang = "关";
break;
}
else if (listB[1].ToString().Trim() == "1" && listB[2].ToString().Trim() == "0")
{
sHang = "开";
break;
}
else
{
sHang = listB[1].ToString().Trim();
break;
}
}
}
else
{
sHang = "0";
}
}
}
catch (Exception e)
{
Response.Write("在取列值的时候出现错误!" + e.Message);
}
return sHang;
}
#endregion
#region 获得Datagrid整个表格中的内容,保存到泛型Dictionary<string, List<string>>中
public Dictionary<string, List<string>> getDateTable()
{
Dictionary<string, List<string>> HasDate = new Dictionary<string, List<string>>();
try
{
Dictionary<string, ArrayList> oscar = this.getHashtable();
List<string> lieTime = this.getLieTime();
foreach (string Ltime in lieTime)
{
List<string> listSensors = new List<string>();
string sKey = Ltime;
for (int i = 0; i < listLie.Count; i++)
{
string sCkey = listLie[i].ToString();
string svalue=string.Empty;
if (oscar.ContainsKey(sCkey))
{
svalue = this.getHangInfo(oscar, sKey, sCkey);
}
else
{
svalue = "无";
}
listSensors.Add(svalue);
}
HasDate.Add(sKey,listSensors);
}
}
catch(Exception e)
{
Response.Write("在取整个表格的时候出现错误!" + e.Message);
}
return HasDate;
}
#endregion
#region 将1个完整的日期时间+上1个时间段(秒),最后获得1个DateTime类型的时
public DateTime TimeAdd(string strNowTime,string sTime)
{
string sDate = string.Empty;
DateTime getTime = new DateTime();
DateTime nowTime = Convert.ToDateTime(strNowTime);
TimeSpan a = new TimeSpan(nowTime.Ticks);
TimeSpan t = new TimeSpan(Convert.ToInt64(sTime) * (1000 * 10000));
TimeSpan ts = a.Add(t);
int iDay = a.Days - ts.Days;
if (iDay != 0)
{
bTime = true;
sDate = nowTime.Year.ToString() + "-" + nowTime.Month.ToString() + "-" + nowTime.Day.ToString() + " " + ts.Hours.ToString() + ":" + ts.Minutes.ToString() + ":" + ts.Seconds.ToString();
}
else
{
bTime = false;
sDate = nowTime.Year.ToString() + "-" + nowTime.Month.ToString() + "-" + nowTime.Day.ToString() + " " + ts.Hours.ToString() + ":" + ts.Minutes.ToString() + ":" + ts.Seconds.ToString();
}
getTime = Convert.ToDateTime(sDate);
return getTime;
}
#endregion
#region 将指定的值,以编号为键,将内容保存到泛型Dictionary<string, ArrayList>里
public Dictionary<string, ArrayList> getHashtable()
{
Dictionary<string, ArrayList> oscar = new Dictionary<string, ArrayList>();//用来保存指定煤矿传感器的信息
try
{
string sQuerySql = "select SensorNum,TimeVal,RTData,RTStatus,ValidTime from RealTimeHistory where MineNum='" + strKBH + "' and TimeVal>='" + strDate + " 00:00:00' and TimeVal<='" + strDate + " 23:59:59' order by TimeVal";
conn.open();
DataSet myQueryDs = conn.ExceDS(sQuerySql);
conn.close();
for (int j = 0; j < myQueryDs.Tables[0].Rows.Count; j++)
{
string s1 = myQueryDs.Tables[0].Rows[j][1].ToString().Trim();
string s2 = myQueryDs.Tables[0].Rows[j][2].ToString().Trim();
string s3 = myQueryDs.Tables[0].Rows[j][3].ToString().Trim();
string s4 = myQueryDs.Tables[0].Rows[j][4].ToString().Trim();
ArrayList list1 = new ArrayList();
list1.Add(s1);
list1.Add(s2);
list1.Add(s3);
list1.Add(s4);
string strKey = myQueryDs.Tables[0].Rows[j][0].ToString().Trim();
if (oscar.ContainsKey(strKey))
{
ArrayList list3 = (ArrayList)oscar[strKey];
list3.Add(list1);
oscar.Remove(strKey);
oscar.Add(strKey, list3);
}
else
{
ArrayList list2 = new ArrayList();
list2.Add(list1);
oscar.Add(strKey, list2);
}
}
}
catch (Exception em)
{
Response.Write(em.Message);
}
return oscar;
}
#endregion
#region 将数据绑定到DataGrid控件上
private void BindGrid()
{
try
{
MyDataGrid.DataSource = CreateDataSource();
MyDataGrid.DataBind();
}
catch
{
//提示错误信息
}
}
#endregion