zoukankan      html  css  js  c++  java
  • asp.net 查询sql数据表的网页模板

    最近因为工作需求,要制作一个网页模板,主要是用于快速开发,可以查询Sql数据表信息的模板,

    昨天做好了,这个只是一个Demo,但是功能已经齐全了,

    开发新的网站时,需要新增一个xml,复制粘贴网页的前端和后台,注意,前端的样式和逻辑还是要分开写的。

    这样,基本上在10分钟以内,就能开发一个新的网页(只有核心的查询功能)。

     

    这是效果图:

    下面记录一下这个Demo:

    首先是要在Web项目的web.config中配置数据库的连接字符串和xml文件名:

    1 <appSettings>
    2     <add key="xmlDir" value="xml"/>
    3   </appSettings>
    4   <connectionStrings>
    5     <add name="connStr" connectionString="Data Source=10.76.25.XX;DATABASE=XXX;Persist Security Info=True;User ID=sa;Password=XXXXXX;Max Pool Size=300;" providerName="System.Data.SqlClient"/>
    6 </connectionStrings>


    接着,我有做好了一个帮助类QueryHelper:

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Configuration;
      4 using System.Data;
      5 using System.Data.SqlClient;
      6 using System.IO;
      7 using System.Web.UI;
      8 using System.Web.UI.HtmlControls;
      9 using System.Web.UI.WebControls;
     10 using System.Xml.Linq;
     11 
     12 namespace Cong.Utility
     13 {
     14     public delegate void DelegatePageIndexChange(object obj, GridViewPageEventArgs e);
     15 
     16     public class QueryHelper
     17     {
     18         private string xmlName { get; set; }
     19         private Page page { get; set; }
     20         private GridView gv { get; set; }
     21 
     22         private DelegatePageIndexChange dele;
     23 
     24         public QueryHelper(string xmlName, Page page, DelegatePageIndexChange dele)
     25         {
     26             this.xmlName = xmlName;
     27             this.page = page;
     28             this.gv = page.FindControl("gv") as GridView;
     29             this.dele = dele;
     30 
     31             gv.PageIndexChanging += Gv_PageIndexChanging;
     32         }
     33 
     34         public void BindData(object objIndex)
     35         {
     36             var xmlDir = ConfigurationManager.AppSettings["xmlDir"];
     37             //获取xml节点
     38             string path = AppDomain.CurrentDomain.BaseDirectory + (xmlDir == null ? "" : (xmlDir.ToString() + "\")) + xmlName;
     39             if (!File.Exists(path))
     40                 throw new Exception("xml is not exist.");
     41 
     42             XDocument xdoc = XDocument.Load(path);
     43             XElement root = xdoc.Root;
     44 
     45             //获取基本查询语句的变量
     46             string tableName = root.Element("tableName").Value;
     47             string topNumber = root.Element("top").Value;
     48 
     49             //拼接where条件语句
     50             List<string> conditions = new List<string>();
     51             List<SqlParameter> ps = new List<SqlParameter>();
     52             foreach (var ele in root.Element("field").Elements())
     53             {
     54                 if (ele.Element("search").Value.Equals("0"))
     55                 {
     56                     HtmlInputText tb = page.FindControl("search_" + ele.Name.ToString()) as HtmlInputText;
     57                     if (tb == null)
     58                         continue;
     59 
     60                     if (!tb.Value.Trim().Equals(""))
     61                     {
     62                         conditions.Add(string.Format("{0} like '%'+@{0}+'%'", ele.Name.ToString()));
     63                         ps.Add(new SqlParameter("@" + ele.Name.ToString(), tb.Value.Trim()));
     64                     }
     65                 }
     66             }
     67             //是否有删除标识
     68             foreach (var ele in root.Element("flag").Elements())
     69             {
     70                 if (ele.Value.Equals("0"))
     71                     conditions.Add(ele.Name + " " + ele.Value);
     72             }
     73             string strWhere = "";
     74             if (conditions.Count > 0)
     75                 strWhere = "where " + string.Join(" and ", conditions.ToArray());
     76 
     77             //拼接sort条件语句
     78             List<string> sorts = new List<string>();
     79             foreach (var ele in root.Element("sorts").Elements())
     80             {
     81                 sorts.Add(ele.Element("field").Value + " " + ele.Element("type").Value);
     82             }
     83             string strOrderBy = "";
     84             if (sorts.Count > 0)
     85                 strOrderBy = "order by " + string.Join(",", sorts.ToArray());
     86 
     87             //拼接sql语句
     88             string sql = string.Format("select top {0} * from {1} {2} {3}", topNumber, tableName, strWhere, strOrderBy);
     89             DataTable dt = SqlHelper.ExecuteDataTable(sql, ps);
     90 
     91             BindGV(dt, root, objIndex);
     92         }
     93 
     94         public void BindGV(DataTable dt, XElement root, object objIndex)
     95         {
     96             gv.DataSource = null;
     97             gv.Columns.Clear();
     98             gv.AutoGenerateColumns = false;
     99             gv.AllowPaging = true;
    100             gv.PageSize = int.Parse(root.Element("pageSize").Value);
    101 
    102             BoundField gvColumn = null;
    103             foreach (var ele in root.Element("field").Elements())
    104             {
    105                 if (ele.Element("visible").Value.Equals("0"))
    106                 {
    107                     gvColumn = new BoundField();
    108                     gvColumn.HeaderText = ele.Element("cn").Value;
    109                     gvColumn.DataField = ele.Name.ToString();
    110                     gv.Columns.Add(gvColumn);
    111                     gvColumn = null;
    112                 }
    113             }
    114 
    115             gv.DataSource = dt;
    116             gv.PageIndex = objIndex == null ? 0 : Convert.ToInt32(objIndex);
    117             gv.DataBind();
    118         }
    119 
    120         private void Gv_PageIndexChanging(object sender, GridViewPageEventArgs e)
    121         {
    122             dele(sender, e);
    123             BindData(e.NewPageIndex);
    124         }
    125     }
    126 }


    然后,是SqlHelper,这个就不放出来了,以前也发过。

     

    接着创建一个xml,我是放在项目主目录下的“xml”文件夹内,内容如下:

     1 <?xml version="1.0" encoding="utf-8" ?>
     2 <root>
     3   <tableName>V_121_LOT_LIST</tableName>
     4   <top>100</top>
     5   <field>
     6     <lot_id>
     7       <cn>Id</cn>
     8       <visible>0</visible>
     9       <search>0</search>
    10     </lot_id>
    11     <lot_code>
    12       <cn>批号</cn>
    13       <visible>0</visible>
    14       <search>0</search>
    15     </lot_code>
    16     <plan_qty>
    17       <cn>生产数量</cn>
    18       <visible>1</visible>
    19       <search>1</search>
    20     </plan_qty>
    21     <now_qty>
    22       <cn>当前数量</cn>
    23       <visible>0</visible>
    24       <search>1</search>
    25     </now_qty>
    26   </field>
    27   <flag>
    28     <state_flg>1</state_flg>
    29     <del_flg>1</del_flg>
    30   </flag>
    31   <sorts>
    32     <sort>
    33       <field>lot_id</field>
    34       <type>desc</type>
    35     </sort>
    36   </sorts>
    37   <pageSize>20</pageSize>
    38 </root>


    最后,创建一个WebForm.aspx,

    下面分别是后台和前端的代码:

     1 using Cong.Utility;
     2 using System;
     3 using System.Web.UI.WebControls;
     4 
     5 namespace QueryTemplet
     6 {
     7     public partial class lot : System.Web.UI.Page
     8     {
     9         private static string xmlName = "lot.xml";
    10 
    11         protected QueryHelper qh = null;
    12 
    13         protected void Page_Load(object sender, EventArgs e)
    14         {
    15             qh = new QueryHelper(xmlName, this, Gv_PageIndexChanging);
    16             qh.BindData(ViewState["pageIndex"]);
    17         }
    18 
    19         private void Gv_PageIndexChanging(object sender, GridViewPageEventArgs e)
    20         {
    21             ViewState["pageIndex"] = e.NewPageIndex;
    22         }
    23 
    24         protected void btnSearch_Click(object sender, EventArgs e)
    25         {
    26             qh.BindData(ViewState["pageIndex"]);
    27         }
    28     }
    29 }
     1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="lot.aspx.cs" Inherits="QueryTemplet.lot" %>
     2 
     3 <!DOCTYPE html>
     4 
     5 <html xmlns="http://www.w3.org/1999/xhtml">
     6 <head runat="server">
     7     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     8     <title></title>
     9 </head>
    10 <body>
    11     <form id="form1" runat="server">
    12         <div>
    13             Id:<input type="text" id="search_lot_id" runat="server" />
    14             批号:<input type="text" id="search_lot_code" runat="server" />
    15             <br />
    16             <asp:Button Text="查找" ID="btnSearch" runat="server" OnClick="btnSearch_Click" />
    17         </div>
    18         <div>
    19             <asp:GridView ID="gv" runat="server">
    20             </asp:GridView>
    21         </div>
    22     </form>
    23 </body>
    24 </html>

    前端的代码,自己再套上样式和编写js代码就可以使用了。


    最后,也放出另一个效果图,我做好这个新的页面,只复制粘贴了几分钟。

    就这些,欢迎交流。

     

    源码下载:http://download.csdn.net/detail/cycong108/9739562

  • 相关阅读:
    CentOS7下安装MySQL
    Jmeter测试SOAP协议(Jmeter 3.3)
    新版谷歌浏览器( 60.0.3088.3)怎样获取安全证书
    springboot 修改属性配置的三种方法
    jdbc、数据库驱动、mybaties、数据库连接池之间的关系
    Java程序编译和运行的过程
    zk在kafka中的作用
    zk简述
    HttpWebRequest Post请求webapi
    本地数据库(sql server)插入一条新数据时,同步到服务器数据库
  • 原文地址:https://www.cnblogs.com/chenyucong/p/6291899.html
Copyright © 2011-2022 走看看