后台cs.codeusing 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.SqlClient;
using System.Data.OleDb;
using System.Xml;
using System.IO;
using System.Collections.Generic;
using System.Drawing;namespace Product_System
{
    public partial class _Default : System.Web.UI.Page
    {
        DataSet myds = null;
        //数据库连接
        string strconn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                DropDownList1.DataValueField = "XID";
                DropDownList1.DataTextField = "XName";
                DropDownList1.DataSource = SelectVal();
                DropDownList1.DataBind();
                GridViewBind();
            }
            
        }        /// <summary>
        /// 绑定GridView
        /// </summary>
        public void BindGridView()
        {
            SqlConnection sqlcon = new SqlConnection(strconn);
            sqlcon.Open();
            string str = "select * from Product";
            SqlDataAdapter sqlDA = new SqlDataAdapter(str,sqlcon);
            myds = new DataSet();
            sqlDA.Fill(myds,"Product");
            GridView1.DataSource = myds.Tables["Product"];
            GridView1.DataBind();
            sqlcon.Close();
        }        /// <summary>
        /// 动态GridView绑定
        /// </summary>
        public void GridViewBind()
        {
            DataTable dt = new DataTable();
            dt = selectProduct(txtName.Text, DropDownList1.SelectedValue);
            int number = myds.Tables[0].Columns.Count;
            if (dt.Rows.Count > 0)
            {
                txtName.Text = "";
                for (int i = 0; i < number; i++)
                {
                    if (jiexiName(i.ToString(), "DB_CNANME", "disp", "on") != "")
                    {
                        BoundField field = new BoundField();
                        field.DataField = jiexiName(i.ToString(), "DB_CNANME", "disp", "on");
                        field.HeaderText = jiexiName(i.ToString(), "grid_name", "disp", "on");
                        GridView1.Columns.Add(field);
                        GridView1.DataSource = dt;
                        GridView1.DataBind();
                    }
                }
            }
        }        /// <summary>
        /// 删除数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public int DeleteProduct(int id)
        {
            string sql = "Delete from Product where ID='" + id + "'";
            int result = ExecuteNonQuery(sql);
            return result;
        }        /// <summary>
        /// 查询数据
        /// </summary>
        /// <param name="TextVal">文本框值</param>
        /// <param name="DropVal">下拉值</param>
        /// <returns></returns>
        private DataTable selectProduct(string TextVal, string DropVal)
        {
            string sql = "select " + SelectJieXiName() + " from Product where";            if (TextVal.Length > 0)
            {
                sql += " " + DropVal + " like '%" + TextVal + "%'";
            }
            else
            {
                sql = "select * from Product";
            }
            return ExecuteQuery(sql);
        }        /// <summary>
        /// 对数据库执行 SQL 查询
        /// </summary>
        /// <param name="strSqlPro"></param>
        /// <returns></returns>
        public DataTable ExecuteQuery(string strSqlPro)
        {
            SqlDataAdapter DA = new SqlDataAdapter(strSqlPro, strconn);
            DataSet ds = new DataSet();
            DA.Fill(ds);
            return ds.Tables[0];
        }        /// <summary>
        /// 执行SQL语句,返回受影响的行数
        /// </summary>
        /// <param name="strSQL"></param>
        /// <returns></returns>
        public int ExecuteNonQuery(string strSQL)
        {
            int result = 0;
            SqlConnection sqlCon = new SqlConnection(strconn);
            sqlCon.Open();
            SqlCommand sqlComm = new SqlCommand(strSQL, sqlCon);
            result = sqlComm.ExecuteNonQuery();
            sqlCon.Close();
            return result;
        }        /// <summary>
        /// 查询按钮事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button1_Click1(object sender, EventArgs e)
        {
            GridViewBind();
        }        /// <summary>
        /// 删除事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void GridView1_RowDeleting(object sender,GridViewDeleteEventArgs e)
        {
            int rowid = int.Parse(GridView1.DataKeys[e.RowIndex][0].ToString());
            int result = DeleteProduct(rowid);
            if (result > 0)
            {
                GridViewBind();
                Response.Write("<script>alert('删除成功!')</script>");
            }
            else
            {
                Response.Write("<script>alert('删除失败!')</script>");
            }
        }        /// <summary>
        /// GridView索引改变事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            GridViewBind();
        }
                ///<summary>
        ///获取XML节点属性
        ///</summary>
        ///<param name="sname">节点属性</param>
        ///<returns></returns>
        private string jiexiName(string sno,string s_attrib,string s_key,string s_kvalue)
        {
            XmlDocument doc = new XmlDocument();
            //取到xml文档
            doc.Load(Server.MapPath("XmlFile/TableColumns.xml"));
            //取到根节点
            XmlElement root = (XmlElement)doc.SelectSingleNode("ebaby");
            foreach (XmlNode columns_node in root.SelectSingleNode("columns").ChildNodes)
            {
                XmlElement columns_element = (XmlElement)columns_node;
                if (columns_element.GetAttribute("dateset_no") == sno && columns_element.GetAttribute(s_key) == s_kvalue)
                {
                    return columns_element.GetAttribute(s_attrib);
                }
            }
            return "";
        }        /// <summary>
        /// 获取XML属性值(disp="on"的列)
        /// </summary>
        /// <returns></returns>
        private string SelectJieXiName()
        {
            string str = null;
            BindGridView();
            //取XML里字段列表
            int resCount = myds.Tables[0].Columns.Count;
            for (int a = 0; a < resCount; a++)
            {
                str += jiexiName(a.ToString(), "DB_CNANME", "disp", "on") + ",";
            }
            while (str.IndexOf(",,") >= 0)
            {
                str = str.Replace(",,", ",");
            }
            //去掉列字段后面的逗号
            str = str.Substring(0, str.Length - 1);
            return str;
        }
        // <summary>
        // 编辑事件
        // </summary>
        // <param name="sender"></param>
        // <param name="e"></param>
        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            
        }        
        ///<summary>
        ///获取XML节点属性标题值
        ///</summary>
        ///<param name="sname">节点属性值</param>
        ///<returns></returns>
        private List<XMLEns> SelectVal()
        {
            List<XMLEns> gridlist = new List<XMLEns>();
            XmlDocument doc = new XmlDocument();
            //取到xml文档
            doc.Load(Server.MapPath("XmlFile/TableColumns.xml"));
            //取到根节点
            XmlElement root = (XmlElement)doc.SelectSingleNode("ebaby");
            foreach (XmlNode columns_node in root.SelectSingleNode("columns").ChildNodes)
            {
                XmlElement columns_element = (XmlElement)columns_node;
                if (columns_element.GetAttribute("query") == "on")
                {
                    XMLEns  x = new XMLEns ();
                    x.XID = columns_element.GetAttribute("DB_CNANME");
                    x.XName = columns_element.GetAttribute("grid_name");
                    gridlist.Add(x);
                }
            }
            return gridlist;
        }        /// <summary>
        /// 弹出错误消息对话框
        /// </summary>
        /// <param name="str"></param>
        protected void ShowMessage(string str)
        {
            Response.Write("<script language='javascript'>alert('" + str + "');</script>");
        }        protected void Drop_DataBond(object sender, EventArgs e)
        {
            DropDownList1.Items.Add("——请选择——");
            if (!IsPostBack)
            {
                DropDownList1.SelectedValue = "——请选择——";
            }
        }
 
    }    #region 属性
    public class XMLEns
    {
        string xid = "";
        string xname = "";
        public string XID
        {
            get
            {
                return xid;
            }
            set
            {
                xid = value;
            }
        }
        public string XName
        {
            get
            {
                return xname;
            }
            set
            {
                xname = value;
            }
        }
    }
    #endregion
}