• asp.net在应用母版的页面下采用了ModalPopupExtender弹出窗中应用autocomplete


    autocomplete是jqueryUI的一个插件,可以实现自动填充的功能。

    要点:1、应用了母版页,所以取页面上控件的ID时与一般方法不同

    2、由于用了ajax的updatepanel,所以会出现第一次可以正常显示,updatepaenl更新页面以后就不行了(页面刷新后第二次就无法正常使用)的问题

    3、在ModalPopupExtender关联的PANEL中应用时,autocomplete下拉框老是显示在底层,被PANEL覆盖,无法正常使用

    本次用法:在界面上updatepanel中放置两个TEXTBOX控件:txtBox1、txtBox2、查询按钮;在ModalPopupExtender关联的PANEL中放置txtBox3、及保存按钮

    txtBox1中放置从数据库中读取的记录值,以逗号分隔;txtBox2、txtBox3关联autocomplete,显示同样的内容。在脚本中实现将txtBox1中的值传给数组,然后添加到autocomplete下拉框,然后分别关联到txtBox2、txtBox3。

    实现:

    在源中添加引用及实现脚本

    <%@ Page Title="测试" Language="C#" MasterPageFile="~/Mast.master" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="WeihuJzxDtxx" %>
    
    <%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>
    
    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">  
    
    
    可以隐隐约约网上的也可以引用自己本地的(本地的注意js前是/不是~/),样式也可以在母版页中引用
      <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
       <%--<link rel="stylesheet" href="/js/jquery-ui.css" />--%>
       <%--<link rel="stylesheet" href="/js/jquery.ui.autocomplete.css" />--%>
      <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
      <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
    
        <asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
        </asp:ScriptManagerProxy>
        <script type ="text/javascript">
    
    //下面一句实现页面局部刷新时autocomplete任然有效 Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(onPageLoaded); function onPageLoaded() {
    var getValue = document.getElementById('<%=txtBox1.ClientID%>').value; var availableTags = getValue.split(","); $("#ctl00_ContentPlaceHolder1_txtBox2").autocomplete({ source: availableTags }); $("#ctl00_ContentPlaceHolder1_txtBox3").autocomplete({ source: availableTags }); }; </script>

    脚本中取应用母版页的页面上的控件的ID:document.getElementById('<%=txtBox1.ClientID%>')或直接写为ctl00_ContentPlaceHolder1_txtBox2

    避免单击txtBox3时autocomplete下拉框被遮挡:修改jquery-ui.css中autocomplete的值如下 ,增加z-index: 100000000000000000000000000000000;
    使其始终保持在最上层(日历控件被遮挡也是采用这种修改方法)

    .ui-autocomplete {
        position: absolute;
        top: 0;
        left: 0;
        cursor: default;
         z-index: 100000000000000000000000000000000;
    }

    在母版中引用本地放置的样式方法

    <link href="App_Themes/jquery-ui.css" rel="stylesheet" type="text/css" />

    参考文件1:

    http://jqueryui.com/autocomplete/

    <!doctype html>
     
    <html lang="en">
    <head>
      <meta charset="utf-8" />
      <title>jQuery UI Autocomplete - Default functionality</title>
      <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
      <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
      <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
      <link rel="stylesheet" href="/resources/demos/style.css" />
      <script>
      $(function() {
        var availableTags = [
          "ActionScript",
          "AppleScript",
          "Asp",
          "BASIC",
          "C",
          "C++",
          "Clojure",
          "COBOL",
          "ColdFusion",
          "Erlang",
          "Fortran",
          "Groovy",
          "Haskell",
          "Java",
          "JavaScript",
          "Lisp",
          "Perl",
          "PHP",
          "Python",
          "Ruby",
          "Scala",
          "Scheme"
        ];
        $( "#tags" ).autocomplete({
          source: availableTags
        });
      });
      </script>
    </head>
    <body>
     
    <div class="ui-widget">
      <label for="tags">Tags: </label>
      <input id="tags" />
    </div>
     
     
    </body>
    </html>

    参考文件2:

    http://bbs.csdn.net/topics/390008006

     <asp:ScriptManager ID="ScriptManager1" runat="server">
    
        </asp:ScriptManager>
           <script type="text/javascript" language="javascript">
    
    //给ScriptManager的实例 添加加载成功后需要执行的js方法
    Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(onPageLoaded);
    
    
    function onPageLoaded(sender, args) {
       
            alert("here"); 
            
            function formatItemForLog(row){
          
           return  row[0];
           }  
               
            $("#auto").autocomplete("GetProjectPhasesList.aspx?UnitID=18",{
                    scroll:true,
                    formatItem:formatItemForLog,
                cacheLength:0,             
                delay:500,    
                '150px',          
                selectFirst:false,
                notRedirect:false     
                    });
                    
            alert("here2")
    }
    
    </script> 
  • 相关阅读:
    Leetcode--Median of Two Sorted Arrays
    My rule
    00113_通过反射获取成员方法并使用
    雷林鹏分享:MySQL 管理
    雷林鹏分享:MySQL 安装
    雷林鹏分享:MySQL 教程
    雷林鹏分享:jQuery Mobile 列表视图
    雷林鹏分享:jQuery Mobile 网格
    雷林鹏分享:MySQL 导出数据
    雷林鹏分享:MySQL 导入数据
  • 原文地址:https://www.cnblogs.com/enjoyprogram/p/3403451.html
Copyright © 2020-2023  润新知