有时候我们不确定我们gridview要显示那些列,或者我们希望可以动态配置gridview那些列显示,以及宽度,这时可以通过可以把列的消息存放的数据库,通过读取数据库实现动态绑定列,也可以通过配置xml实现,当然也可以第一次通过读取xml,然后向数据库插入列消息,然后下一次判断数据库是否已经存储了列数据,如果没有存入,那么读取xml。

下面我讲解如何通过xml如何动态绑定gridview

一效果:

二,核心代码:

1.读取xml文件,返回datatable

    /// <summary>        /// 获取xmltable        /// </summary>        /// <param name="xmlname">xml名字</param>        /// <returns></returns>        public DataTable getDTXML(string xmlname)        {            DataTable result = new DataTable();            string fileName = HttpContext.Current.Request.PhysicalApplicationPath + "\\Xml\\" + xmlname + ".xml";//xml的物理路径            XmlDocument xmlDoc = new XmlDocument();            xmlDoc.Load(fileName);            XmlNodeList xWitsTablesList = xmlDoc.SelectNodes("/config");            foreach (XmlNode xOracleNode in xWitsTablesList)            {                foreach (XmlNode node2 in xOracleNode.ChildNodes)                {                    if (node2.Name == "Header")                    {                        //   //绑定表头                        foreach (XmlNode node3 in node2.Attributes)                        {                            result.Columns.Add(node3.Value);                        }                    }                    else                    {                        //数据行                        int i = 0;//列标志                        DataRow dr = result.NewRow();                        foreach (XmlNode node4 in node2.Attributes)                        {                            dr[i] = node4.Value.ToString();                            i++;                        }                        result.Rows.Add(dr);                    }                }            }            return result;        }


2.绑定gridview列

    /// <summary>    /// 绑定gridview列    /// </summary>    /// <param name="gv"></param>    /// <param name="dt"></param>    /// <param name="width"></param>    /// <param name="columnNumber"></param>    public void HtmlGridView(GridView gv,DataTable dt,int width,int columnNumber)    {        try        {            int k=0;            if (dt.Rows.Count > 0)            {                foreach (DataRow dr in dt.Rows)                {                    BoundField bf = new BoundField();                    bf.HeaderText = dr["name"].ToString();                    bf.DataField = dr["field_code"].ToString();                    bf.HeaderStyle.Width = Convert.ToInt32(dr["width"].ToString());                    bf.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;                    bf.HeaderStyle.ForeColor = System.Drawing.Color.Black;                    bf.SortExpression = dr["name"].ToString();                    gv.Columns.Add(bf);                    k+= Convert.ToInt32(dr["width"].ToString());                    if (dr["width"].ToString()=="0")                    {                        gv.Columns[columnNumber].Visible = false;                    }                    columnNumber++;                }                gv.Width = k + width;            }         }        catch(Exception ex)        {            throw new Exception(ex.Message);        }    }


三,下面是全部源码:

HtmlGridView.aspx源码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="HtmlGridView.aspx.cs" Inherits="HtmlGridView" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head id="Head1" runat="server">    <title>读取xml</title>    <link rel="Stylesheet" type="text/css" href="Css/xmlReadOne.css" />    <link rel="Stylesheet" type="text/css" href="Css/Common/InputStyle.css" />    <script type="text/javascript"  src="Scripts/jquery-1.4.1.min.js"></script></head><body>    <form id="form1" runat="server">    <p>    <p class="main">      <p class="list">        <asp:GridView runat="server" ID="gv_class" AutoGenerateColumns="False"                DataKeyNames="ID" Width="100%" CellPadding="4"                ForeColor="#333333" GridLines="None"   >            <AlternatingRowStyle BackColor="White" />            <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />            <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />            <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />            <RowStyle BackColor="#FFFBD6"  HorizontalAlign="Center" ForeColor="#333333" />            <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />            <SortedAscendingCellStyle BackColor="#FDF5AC" />            <SortedAscendingHeaderStyle BackColor="#4D0000" />            <SortedDescendingCellStyle BackColor="#FCF6C0" />            <SortedDescendingHeaderStyle BackColor="#820000" />            <Columns>              <asp:TemplateField   HeaderText="NO">                <ItemTemplate>                  <%#Eval("NO") %>                </ItemTemplate>              </asp:TemplateField>            </Columns>        </asp:GridView>      </p>     </p>    </p>    </form></body> <script type="text/javascript">     function add_clear() {         $(".button").find("input[type=text] ").each(function () {             $(this).val('');         });     }    </script></html>


HtmlGridView.aspx.cs源码:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.IO;using System.Xml;using System.Web.UI.HtmlControls;using IsXMLUtility;using System.Data;public partial class HtmlGridView : System.Web.UI.Page{    XmlHelper xmlHelper = new XmlHelper();    protected void Page_Load(object sender, EventArgs e)    {        if (!IsPostBack)        {            //gv_class绑定列            DataTable dt = xmlHelper.getDTXML("表头");            Functions.getInstance().HtmlGridView(gv_class, dt, 10, 1);            InitGV();        }    }    /// <summary>    /// 绑定gridview    /// </summary>    private void InitGV()    {        DataTable dt = xmlHelper.getDTXML("内容", "NO", 1);        this.gv_class.DataSource = dt.DefaultView;        this.gv_class.DataBind();    }}


表头.xml

<?xml version="1.0" encoding="utf-8" ?><config>    <Header  col1="name"      col2="field_code" col3="width" col4="dispaly"  ></Header>    <row     col1="班级编号"  col2="ID"         col3="100"   col4="true"     ></row>    <row     col1="班级"      col2="class"      col3="100"   col4="true"     ></row>    <row     col1="班级名称"  col2="class_name" col3="100"   col4="true"     ></row>    <row     col1="年级"      col2="year"       col3="100"   col4="true"     ></row>    <row     col1="学校"      col2="school"     col3="100"   col4="true"     ></row>    <row     col1="人数"      col2="count"     col3="100"    col4="true"     ></row></config>



内容.xml

<?xml version="1.0" encoding="utf-8" ?><config>  <Header  col1="ID" col2="class" col3="class_name" col4="year" col5="school"  col6="count" ></Header>  <row col1="一五班" col2="01" col3="实验班" col4="2013" col5="三峡高级中学"  col6="20" ></row>  <row col1="一六班" col2="02" col3="奥数班" col4="2013" col5="三峡高级中学"  col6="25" ></row>  <row col1="一六班" col2="03" col3="阳光班" col4="2013" col5="三峡高级中学"  col6="69" ></row></config>


xmlReadOne.css

body{margin:0 auto;padding:0px;font-family:'宋体';}.main{     margin-left:20px;     margin-top:10px;     text-align:left;    }    .button{    width:600px;    border:#A8B7CC solid 1px;background-color:#FFFFFF;    }.content{    width:600px;    border:#A8B7CC solid 1px;background-color:#E0EDFE;    margin-top:20px; } .list{    width:600px;    height:300px;    overflow:auto;    border:#A8B7CC solid 1px;background-color:#FFFFFF;overflow: scroll;SCROLLBAR-FACE-COLOR:#E0EDFE;PADDING-BOTTOM: 0px;SCROLLBAR-HIGHLIGHT-COLOR: #ffffff;SCROLLBAR-SHADOW-COLOR: #cccccc;SCROLLBAR-3DLIGHT-COLOR:#ffffff;SCROLLBAR-ARROW-COLOR:#95AFD4;PADDING-TOP: 0px;SCROLLBAR-TRACK-COLOR: #ffffff;SCROLLBAR-DARKSHADOW-COLOR: #ffffff;LETTER-SPACING: 1pt;    margin-top:20px; }  .gv{width:600px;height:400px;margin-top:20px;border:#A8B7CC solid 1px;background-color:#FFFFFF;overflow: scroll;SCROLLBAR-FACE-COLOR:#E0EDFE;PADDING-BOTTOM: 0px;SCROLLBAR-HIGHLIGHT-COLOR: #ffffff;SCROLLBAR-SHADOW-COLOR: #cccccc;SCROLLBAR-3DLIGHT-COLOR:#ffffff;SCROLLBAR-ARROW-COLOR:#95AFD4;PADDING-TOP: 0px;SCROLLBAR-TRACK-COLOR: #ffffff;SCROLLBAR-DARKSHADOW-COLOR: #ffffff;LETTER-SPACING: 1pt;}


Functions.cs

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data;using System.Web.UI.WebControls;/// <summary>///Server 的摘要说明/// </summary>public class Functions{    private static object _synRoot=new object();    private static Functions _instance=null;    private Functions(){////TODO: 在此处添加构造函数逻辑//}    public static Functions getInstance()    {        lock (_synRoot)        {            if (_instance == null)            {                _instance = new Functions();            }        }        return _instance;    }    #region 业务层    /// <summary>    /// 绑定gridview列    /// </summary>    /// <param name="gv"></param>    /// <param name="dt"></param>    /// <param name="width"></param>    /// <param name="columnNumber"></param>    public void HtmlGridView(GridView gv,DataTable dt,int width,int columnNumber)    {        try        {            int k=0;            if (dt.Rows.Count > 0)            {                foreach (DataRow dr in dt.Rows)                {                    BoundField bf = new BoundField();                    bf.HeaderText = dr["name"].ToString();                    bf.DataField = dr["field_code"].ToString();                    bf.HeaderStyle.Width = Convert.ToInt32(dr["width"].ToString());                    bf.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;                    bf.HeaderStyle.ForeColor = System.Drawing.Color.Black;                    bf.SortExpression = dr["name"].ToString();                    gv.Columns.Add(bf);                    k+= Convert.ToInt32(dr["width"].ToString());                    if (dr["width"].ToString()=="0")                    {                        gv.Columns[columnNumber].Visible = false;                    }                    columnNumber++;                }                gv.Width = k + width;            }         }        catch(Exception ex)        {            throw new Exception(ex.Message);        }    }    #endregion}


XmlHelper.cs

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data;using System.Xml;using System.IO;using System.Web.UI;using System.Web.UI.WebControls;namespace IsXMLUtility{       /// <summary>    ///XmlHelper 的摘要说明    /// </summary>    public class XmlHelper    {        private string rtnXml;        public XmlHelper()        {            //            //TODO: 在此处添加构造函数逻辑            //            rtnXml = string.Empty;        }        /// <summary>        /// 获取xmltable        /// </summary>        /// <param name="xmlname">xml名字</param>        /// <returns></returns>        public DataTable getDTXML(string xmlname)        {            DataTable result = new DataTable();            string fileName = HttpContext.Current.Request.PhysicalApplicationPath + "\\Xml\\" + xmlname + ".xml";//xml的物理路径            XmlDocument xmlDoc = new XmlDocument();            xmlDoc.Load(fileName);            XmlNodeList xWitsTablesList = xmlDoc.SelectNodes("/config");            foreach (XmlNode xOracleNode in xWitsTablesList)            {                foreach (XmlNode node2 in xOracleNode.ChildNodes)                {                    if (node2.Name == "Header")                    {                        //   //绑定表头                        foreach (XmlNode node3 in node2.Attributes)                        {                            result.Columns.Add(node3.Value);                        }                    }                    else                    {                        //数据行                        int i = 0;//列标志                        DataRow dr = result.NewRow();                        foreach (XmlNode node4 in node2.Attributes)                        {                            dr[i] = node4.Value.ToString();                            i++;                        }                        result.Rows.Add(dr);                    }                }            }            return result;        }        /// <summary>        ///         /// </summary>        /// <param name="xmlname">xml名字</param>        /// <param name="Header">序号列名字</param>        /// <param name="colsNumber">序号开始编号</param>        /// <returns></returns>        public DataTable getDTXML(string xmlname, string Header, int colsNumber)        {            DataTable result = new DataTable();            if (Header == "")                Header = "N0";            if (colsNumber < 0)                colsNumber = 1;            result.Columns.Add(Header);            string fileName = HttpContext.Current.Request.PhysicalApplicationPath + "\\Xml\\" + xmlname + ".xml";//xml的物理路径            XmlDocument xmlDoc = new XmlDocument();            xmlDoc.Load(fileName);            XmlNodeList xWitsTablesList = xmlDoc.SelectNodes("/config");            foreach (XmlNode xOracleNode in xWitsTablesList)            {                foreach (XmlNode node2 in xOracleNode.ChildNodes)                {                    if (node2.Name == "Header")                    {                        //绑定表头                        foreach (XmlNode node3 in node2.Attributes)                        {                            result.Columns.Add(node3.Value);                        }                    }                    else                    {                        //数据行                        int i = 1;//列标志                        DataRow dr = result.NewRow();                        dr[0] = colsNumber;                        foreach (XmlNode node4 in node2.Attributes)                        {                            dr[i] = node4.Value.ToString();                            i++;                        }                        colsNumber++;                        result.Rows.Add(dr);                    }                }            }            return result;        }     }}

以上就是xml学习(5)xml配置gridview列的内容,更多相关内容请关注PHP中文网(www.php.cn)!

更多相关文章

  1. xml数据岛绑定时的超链接处理的示例代码分享
  2. XML数据岛之数据绑定实例详解
  3. Linux性能优化(十五)——CPU绑定
  4. Linux性能优化(十六)——中断绑定
  5. 动画:浅谈后台 MVC 模型与 MVVM 双向绑定模型
  6. PHP中如何形成static::与new static()的静态绑定
  7. 详解PHP面向对象之后期静态绑定
  8. jQuery 事件绑定方法(bind hover toggle live.... )、删除事件方法
  9. JQuery UI datepicker在绑定到类时不起作用

随机推荐

  1. Android 全局背景音乐
  2. Error while executing process D:\Andr
  3. android 解决小米手机Android Studio安装
  4. Android基础:什么是Android?
  5. Android:TextView跑马灯-详解
  6. android文件关联之mime type
  7. Android Compatibility zoom dialog 关闭
  8. 命令行装android
  9. Android构建工具
  10. Android API Level对应Android版本一览表