zoukankan      html  css  js  c++  java
  • 通过jquery和js绑定下拉列表 东师理想

    为了避免数据库与前台页面的多次重复交互不必要查询,解决方法为,将DM表稳定数据绑定到js中,通过jquery将其绑定到前台下拉列表,这样就避免了和数据库的多次重复交互。

    具体实现方法如下:

    将数据库DM表生成js文件,此处以“性别表”为例

    生成代码为C#

    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Web.UI.WebControls;
    using System.IO;
    
    public partial class Test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindTable();
    
                
            }
        }
    
        //绑定表
        private void BindTable()
        {
            //查找所有基本代码表,以T_DM_为前缀
            string strSQL = "select name from sysobjects where type='U' AND name LIKE '%T_DM_%' order by name";
    
            DataSet DS = SqlHelper.ExecuteDataset(SqlHelper.ConnString, CommandType.Text, strSQL);
    
            GridView1.DataSource = DS.Tables[0].DefaultView;
            GridView1.DataBind();
    
            DS.Dispose();
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                CheckBox myBox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
                if (myBox.Checked)
                {                
    
                    string[] table = GridView1.DataKeys[i].Value.ToString().Split(new char[]{'_'});
    
                    string sql = "select name  from syscolumns  where (id = (select id from sysobjects  where (id = OBJECT_ID('" + GridView1.DataKeys[i].Value.ToString() + "'))))order by colid";
    
                    DataSet DS = SqlHelper.ExecuteDataset(SqlHelper.ConnString, CommandType.Text, sql);
                    //拼接sql语句
                    sql = "SELECT " + DS.Tables[0].Rows[0][0].ToString() + "," + DS.Tables[0].Rows[1][0].ToString() + " FROM " + GridView1.DataKeys[i].Value.ToString() + " ORDER BY " + DS.Tables[0].Rows[0][0].ToString();
    
                    DS = SqlHelper.ExecuteDataset(SqlHelper.ConnString, CommandType.Text, sql);
    
                    string result = "var "+table[2]+"_data={'0':{";
    
                    for (int j = 0; j < DS.Tables[0].Rows.Count; j++)
                    {
                        result += "'" + DS.Tables[0].Rows[j][0].ToString() + "':'" + DS.Tables[0].Rows[j][1].ToString() + "',";
                    }
                    result = result.Substring(0, result.Length - 1);
    
                    result += "}}";
    
                    string path = Server.MapPath("js_Data\\" + table[2] + ".js");
    
                    if (File.Exists(path))
                    {
                        File.Delete(path);
                    }
    
                    StreamWriter sr = File.CreateText(path);
                    sr.WriteLine(result);
                    sr.Close(); 
    
                }
            }
        }
    }

    2.  生成到"js_Data"文件夹下“XB.js”文件

    3.  导入jquery的2个js文件

    http://115.com/file/c2l61v34

    4. 以下是html代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
     <head>
      <title>示例文档</title>
      <!--将jQuery引用进来-->
      <script src=jquery-1.3.2.js type="text/javascript"></script> 
      <!--引用级联的下拉框框架-->
      <script type="text/javascript" src="LinkageSelect.js"></script>
      <!--引用js_Data文件-->
      <script type="text/javascript" src="js_Data/XB.js"></script>
     
     <script>
            $(function() {
                var myobj=eval('XB_data');
                var options    = {
                    data:myobj
                }
                var sel = new LinkageSelect(options);
                sel.bind('#XB .level_1');
                //sel.bind('#XB .level_1','1');第二个参数为默认值
            })
     </script>
    
    </head>
    <body>
        <div id="XB">
            <select class="level_1" style="'+width+';"></select>
        </div>
    </body>
    </html>

    请注意: 在实际应用中,笔者发现在thinkbox中使用该方法时加载时不显示,后经过讨论得出解决方法

    <script>
            $(function() {
            
                setTimeout("jsLoad()",0);
                
            })
            
            function jsLoad()
            {
                $("p").toggle() ;
                var myobj=eval('XBDM_data');
                var options    = {
                    data:myobj
                }
                var sel = new LinkageSelect(options);
                sel.bind('#MZ .level_1');
            }
     </script>
  • 相关阅读:
    Spark2.x学习笔记:Spark SQL程序设计
    Spark2.x学习笔记:Spark SQL的SQL
    Spark2.x学习笔记:Spark SQL快速入门
    Hystrix入门执行过程
    redis配置master-slave模式
    MockServer 入门
    Locust分布式负载测试工具入门
    poi读取excel元素
    hadoop+spark集群搭建入门
    Vi文档
  • 原文地址:https://www.cnblogs.com/cczhoufeng/p/2482388.html
Copyright © 2011-2022 走看看