xml读取+gridview多行表头实现

来源:互联网 发布:龙珠 布玛 悟空 知乎 编辑:程序博客网 时间:2024/06/06 06:29
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;

public partial class PollutionSource_DetailPage_DischargeGas : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
if (((DataView)DischargeGasDB.Select()).Count == 0)
        
{
            ClientScript.RegisterStartupScript(GetType(), 
"""<script>document.getElementById('hidden').style.display='none'</script>");
            Response.Write(
"<font color='red'>数据不存在!</font>");
        }

        
string type = "0";
        
if (((DataView)GetDataType.Select()).Count != 0)
        
{
            type 
= ((DataView)GetDataType.Select()).Table.Rows[0][0].ToString();
        }

        ClientScript.RegisterStartupScript(GetType(), 
"ShowDayByDataType""<script>parent.IfShowMonthAndDay("" + type + "");</script>");
        
try
        
{
            GetXml(((DataView)DischargeGasDB.Select()).Table.Rows[
0]["DifferSourceData"]);
            GetXmlForGrid(((DataView)DischargeGasDB.Select()).Table);
        }

        
catch
        
{ }
    }

    
//将单一的数据保存到Label中
    public string GetXml(object xmlStr)
    
{
        
string xmlstr = "";
        
if (LbHidden.Text != "")
        
{
            xmlstr 
= LbHidden.Text;
        }

        
else if (LbHidden.Text == "")
            xmlstr 
= "<?xml version='1.0' encoding='utf-8' ?><Datas>" + xmlStr.ToString() + "</Datas>";

        XmlDocument XmlDoc 
= new XmlDocument();
        XmlDoc.LoadXml(xmlstr);
        
if (DifferSourceData.Items.Count == 0)
        
{
            ListItem objFirstItem 
= new ListItem();
            objFirstItem.Text 
= "数据中心";
            objFirstItem.Value 
= "0";
            DifferSourceData.Items.Add(objFirstItem);

            
foreach (XmlNode node in XmlDoc.SelectSingleNode("//Datas").ChildNodes)
            
{
                ListItem objItem 
= new ListItem();
                objItem.Text 
= node.Attributes["Desc"].Value;
                objItem.Value 
= node.Attributes["Type"].Value;
                objItem.Attributes.Add(
"DifferSourceData", node.OuterXml);
                DifferSourceData.Items.Add(objItem);
            }

            LbHidden.Text 
= xmlstr;
        }

        
return "";
    }

    
//将多个数据的xml保存到label中
    public string GetXmlForGrid(object xmlStr)
    
{
        
string xmlstr = "";
        DataTable dt 
=(DataTable)xmlStr;
        
if (LbHiddenGrid.Text != "")
        
{
            xmlstr 
= LbHiddenGrid.Text;
        }

        
else if (LbHiddenGrid.Text == "")
        
{
            
for (int i = 0; i < dt.Rows.Count; i++)
            
{
                XmlDocument xmldoc 
= new XmlDocument();
                xmlstr 
+= "<notes>" + dt.Rows[i]["DifferSource"].ToString() + "</notes>";
            }

            xmlstr 
= "<?xml version='1.0' encoding='utf-8' ?><Datas>" + xmlstr + "</Datas>";
        }
        
        LbHiddenGrid.Text 
= xmlstr;
        
return "";
    }

    
//得到gridview被下拉后的回发返回的数据集
    public DataTable GridViewBindByDDpSelectChange()
    
{
        
string endxml = "";
        XmlDocument xmldoc 
= new XmlDocument();
        xmldoc.LoadXml(LbHiddenGrid.Text);
        
foreach (XmlNode node in xmldoc.SelectSingleNode("//Datas").ChildNodes)
        
{
            
if (node.ChildNodes.Count > 0)
            
{
                
foreach (XmlNode ChildNode in node.ChildNodes)
                
{
                    
if (ChildNode.ChildNodes.Count > 0)
                    
{
                        
if (ChildNode.Attributes["type"].Value.Trim() == DifferSourceData.SelectedValue.ToString())
                        
{
                            endxml 
+= ChildNode.FirstChild.OuterXml;
                        }

                    }

                }

            }

        }

        endxml 
= "<Datas>" + endxml + "</Datas>";
        DataSet ds 
= new DataSet();
        ds.ReadXml(XmlReader.Create(
new System.IO.StringReader(endxml)));
        
return ds.Tables[0];
    }

    
//绑定数据
    public void DifferSourceData_SelectedIndexChanged(object sender, EventArgs e)
    
{
        GridView GridView1 
= (GridView)(PollutionForm.FindControl("GridView1"));
        
if (((DropDownList)sender).SelectedItem.Value.Trim() == "0" && PollutionForm.DataSourceID == "")
        
{
            PollutionForm.DataSourceID 
= "DischargeGasDB";
            GridView1.DataSourceID 
= "DischargeGasDB";
            
return;
        }

        XmlDocument xmlDoc 
= new XmlDocument();
        xmlDoc.LoadXml(LbHidden.Text);
        
foreach (XmlNode childnode in xmlDoc.SelectSingleNode("//Datas").ChildNodes)
        
{

            
if (childnode.Attributes["Type"].Value.Trim() == ((DropDownList)sender).SelectedValue.ToString().Trim())
            
{
                DataSet ds 
= new DataSet();
                ds.ReadXml(XmlReader.Create(
new System.IO.StringReader(childnode.FirstChild.OuterXml)));
                PollutionForm.DataSourceID 
= "";
                PollutionForm.DataSource 
= ds.Tables[0];
                PollutionForm.DataBind();
                
break;
            }

        }

        GridView1.DataSourceID 
= "";
        GridView1.DataSource 
= GridViewBindByDDpSelectChange();
        GridView1.DataBind();
    }

    
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    
{
        
if (e.Row.RowType == DataControlRowType.Header)
        
{
            TableCellCollection tcl 
= e.Row.Cells;
            
//清除自动生成的表头
            tcl.Clear();
            
//添加新的表头第一行
            tcl.Add(new TableHeaderCell());
            tcl[
0].RowSpan = 3;
            tcl[
0].Text = "污染物名称";
            tcl[
0].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
1].RowSpan = 3;
            tcl[
1].Text = "产生量(吨)";
            tcl[
1].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
2].ColumnSpan = 4;
            tcl[
2].Text = "去除量(吨)";
            tcl[
2].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
3].ColumnSpan = 9;
            tcl[
3].Text = "排放量(吨)";
            tcl[
3].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
4].RowSpan = 3;
            tcl[
4].Text = "污染物排放标准值</th></tr><tr>";
            tcl[
4].Attributes.Add("bordercolor ""#B4B1B1"); 
            
//第二行表头
            tcl.Add(new TableHeaderCell());
            tcl[
5].RowSpan = 2;
            tcl[
5].Text = "合计";
            tcl[
5].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
6].RowSpan = 2;
            tcl[
6].Text = "其中新增设施";
            tcl[
6].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
7].RowSpan = 2;
            tcl[
7].Text = "其中燃烧废气";
            tcl[
7].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
8].RowSpan = 2;
            tcl[
8].Text = "其中工艺废气";
            tcl[
8].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
9].ColumnSpan = 3;
            tcl[
9].Text = "排放合计";
            tcl[
9].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
10].ColumnSpan = 3;
            tcl[
10].Text = "其中燃烧废气排放量";
            tcl[
10].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
11].ColumnSpan = 3;
            tcl[
11].Text = "其中工艺废气排放量</th></tr><tr>";
            tcl[
11].Attributes.Add("bordercolor ""#B4B1B1"); 
            
//第三行表头
            tcl.Add(new TableHeaderCell());
            tcl[
12].Text = "合计";
            tcl[
12].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
13].Text = "达标量";
            tcl[
13].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
14].Text = "超标量";
            tcl[
14].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
15].Text = "合计";
            tcl[
15].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
16].Text = "达标量";
            tcl[
16].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
17].Text = "超标量";
            tcl[
17].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
18].Text = "合计";
            tcl[
18].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
19].Text = "达标量";
            tcl[
19].Attributes.Add("bordercolor ""#B4B1B1"); 
            tcl.Add(
new TableHeaderCell());
            tcl[
20].Text = "超标量";
            tcl[
20].Attributes.Add("bordercolor ""#B4B1B1"); 

        }

    }

}

 
原创粉丝点击