AspxGridView 弹框选择器 JS

function Dictionary() {
    this.data = new Array();
    this.put = function (key, value) {
        this.data[key] = value;
    };
    this.get = function (key) {
        return this.data[key];
    };
    this.remove = function (key) {
        this.data[key] = null;
    };
    this.isEmpty = function () {
        return this.data.length == 0;
    };
    this.size = function () {
        return this.data.length;
    };
};

$.fn.set = function (text) {
    sele.SetValue(this, text);
}

/*
选择器(王志强-2014-04-26)
*/
var sele = {
    rIndex: 1, para: { id: 1, name: "", parameter: "" },
    paras: new Dictionary(),
    Init: function (options) {
        this.SetOptions(options);
        this.gname = this.options.gname;
        this.fname = this.options.fname;
        var controls = this.options.controls;
        var column = gridDefault.GetColumnByField(this.fname);

        sele[this.fname] = $("input[name=‘" + this.gname + "$DXEditor" + column.index + "‘]");
        for (var i = 0; i < controls.length; i++) {
            var c = gridDefault.GetColumnByField(controls[i]);
            if (c)
                sele[controls[i]] = $("input[name=‘" + this.gname + "$DXEditor" + c.index + "‘][autocomplete!=‘off‘]");
        }
        var cIndex = parseInt(column.index);
        cIndex = cIndex < 10 ? "_" + cIndex : cIndex;
        var evObj = {
            EventObj: $("td[id^=" + this.gname + "_tccell][id$=" + cIndex + "]"),
            InputObj: $("input[name=‘" + this.gname + "$DXEditor" + column.index + "‘][autocomplete!=‘off‘]")
        }
        return evObj;
    },
    SetOptions: function (_options) {
        this.options = {
            gname: "ASPxGridView1",
            fname: "SupplierId",
            controls: []
        };
        $.extend(this.options, _options || {});
    },
    DialogOpen: function (url, _options, control, callback) {
        var _this = this;
        var options = {
            title: "标题",
            id: "msgDialog",
            width: $(window).width() / 3 + "px",
            height: $(window).height() / 3 + "px",
            lock: false,
            drag: false,
            position: "default"

        };
        $.extend(options, _options || {});
        var kHeight = 0;
        var cHeight = parseInt(options.height.replace("px", ""));
        var cWidth = parseInt(options.width.replace("px", ""));
        try {
            if (($(control).offset().top + $(control).height() - $(document).scrollTop() + cHeight > $(window).height())
                                 || $(control).offset().left + $(control).width() - $(document).scrollLeft() + +cWidth > $(window).width()) {

            }
            if ($(control).offset().top == 0 || $(control).offset().left == 0) {
                options.position = "default";
            }
        } catch (e) {
            options.position = "default";
        }

        switch (options.position) {
            case "default":
                options.top = ($(window).height() - cHeight + kHeight) / 2 + $(document).scrollTop() + "px";
                options.left = ($(window).width() - cWidth) / 2 + "px";
                break;
            case "right":
                options.top = $(control).offset().top - cHeight / 2 + kHeight + "px";
                options.left = $(control).offset().left + $(control).width() + "px";
                break;
            case "right-bottom":
                options.top = $(control).offset().top + $(control).height() + kHeight + "px";
                options.left = $(control).offset().left + $(control).width() + "px";
                break;
            case "bottom":
                options.top = $(control).offset().top-2 +  kHeight + "px";
                options.left = $(control).offset().left-7 + "px";
                break;
        }

        if (options.top == "0px" || options.top == "0px") {
            options.top = ($(window).height() - cHeight + kHeight) / 2 + $(document).scrollTop() + "px";
            options.left = ($(window).width() - cWidth) / 2 + "px";
        }
        art.dialog.data("callback", function (data) {
            callback(data);
        });
        if ((typeof sele.paras.get(sele.rIndex)) != "undefined") {
            sele.para.id = sele.paras.get(sele.rIndex);
        } else if (gridDefault.GetRowKey(sele.rIndex) != null) {
            sele.para.id = gridDefault.GetRowKey(sele.rIndex);
        } else {
            sele.para.id = 0;
        }
        url += (url.indexOf("?") != -1) ? "&" : "?";
        url += "id=" + sele.para.id + "&name=" + decodeURIComponent(sele.para.name) + "&parameter=" + decodeURIComponent(sele.para.parameter) + "";
        art.dialog.open(url, options);
        $("html").bind("click", function () { art.dialog({ id: options.id }).close(); $("html").unbind("click"); });
    },
    SetValue: function (o, txt) {
        gridDefault.StartEditRow(this.rIndex);
        o.val(Math.ceil(Math.random() * 10) + txt);
        o.change();
        o.val(txt);
        o.change().blur();
        gridDefault.StartEditRow(this.rIndex);
    },
    ShowAdvanceSelector: function (fname, controls, url, options, callback, dataType, eventObj) {
        var _this = this;
        var obj = this.Init({ fname: fname, controls: controls });

            $(eventObj).live("click", function () {
                _this.DialogOpen(url, options, obj.InputObj, function (data) {
                    if (!dataType) { dataType = "string"; }
                    dataType = dataType.toLocaleLowerCase();
                    var result = data;
                    if (dataType == "json") {
                        result = eval(‘(‘ + data + ‘)‘);
                    }
                    callback(result);
                });
            });

            obj.EventObj.live("click", function () {
                _this.DialogOpen(url, options, obj.InputObj, function (data) {
                    if (!dataType) { dataType = "string"; }
                    dataType = dataType.toLocaleLowerCase();
                    var result = data;
                    if (dataType == "json") {
                        result = eval(‘(‘ + data + ‘)‘);
                    }
                    callback(result);
                });
            });

        obj.InputObj.live("click", function () { return false; });
    }
};

AspxGridView 弹框选择器 JS

时间: 2024-10-29 19:05:38

AspxGridView 弹框选择器 JS的相关文章

小程序自定义类似于选择器弹框

在开发小程序时,隐藏和显示是我们用的比较多的一种,但是就简简单单的显示隐藏,有的时候觉得太low,所以分享一个类似于城市选择器那种从下到上的那种弹框: 这中间就要用到小程序动画    Animation 已经是写好的小demo:可以直接拿过来使用: .wxml <button bindtap="showModel">弹框显示</button> <!-- 弹框 --> <!-- 渐深的背景层 --> <view class='{{bg

js弹框3秒后自动消失

开发中有时候会需要最出弹框后,过几秒自动消失的效果,下面给大家分享一下我自己做的一个小案例. 案例中的弹框使用的是bootstrap里面的模态框,实现自动消失则用的是js中的setInterval方法.该弹框使用了jquery-ui中的draggable方法,可拖动. 目录结构如下: 下面是案例代码: demo.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti

弹框CSS、JS

非本人原创,此为本人导师代码,在此整理分析. 1.遮蔽层,弹框弹出时,页面变灰. CSS部分 .overlay{display:none;position:fixed;left:0;top:0;z-index:1000;width:100%;height:100%;background-color:hsla(0, 0%, 0%, .7);} 2.定时提示小弹框,页面垂直居中显示 CSS部分 /*toast提示*/ .toast{position:fixed;top:50%;left:50%;z-

弹出框 popover.js

弹出框 popover.js 为任意元素添加一小块浮层,就像 iPad 上一样,用于存放非主要信息. 弹出框的标题和内容的长度都是零的话将永远不会被显示出来. 插件依赖 弹出框依赖 工具提示插件 ,因此,如果你定制了 Bootstrap,一定要注意将依赖的插件编译进去. 初始化 由于性能的原因,工具提示和弹出框的 data 编程接口(data api)是必须要手动初始化的. 在一个页面上一次性初始化所有弹出框的方式是通过 data-toggle 属性选中他们: 复制 复制 $(function

js组件--自定义弹框

javascript自定义弹框 性能太差,有很大的改善空间 1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <!--<link href="styles/reset.css" type="text/css&

css-dialog样式实现弹框蒙层全屏无需JS计算高度兼容IE7

<!DOCTYPE html><html><head>  <meta charset="UTF-8">  <title>css-dialog</title>  <script src="http://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script> </head><style type="

原生js实现拖拽弹框的效果

研究了一上午,模仿了拖拽弹框的效果,小有成就 <script type="text/javascript"> function getByClass(classname,parent){ var par=parent||document, eles=par.getElementsByTagName("*"), needArr=[]; for(var i=0;i<eles.length;i++){ if(eles[i].className==clas

JS遮罩层弹框效果

对于前端开发者来说,js是不可缺少的语言.现在我开始把我日常积累的一些js效果或者通过搜索自己总结的一些效果分享给大家,希望能够帮助大家一起进步,也希望大家能够多多支持! 1.今天我先分享一个遮罩层弹框效果: <!DOCTYPE html PUBLIC "-//W3C//DTDXHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <

【前端开发】--js弹框

js三种弹框 一.普通弹框 这类弹框就是仅仅是个提示作用,并不会做其它操作 关键词:alert()    这个没啥好说的,就是一个弹框.  二.判断弹框     这类框有一个判断作用 关键字:confirm() if(confirm("成绩库定稿后成绩无法再做修改,点击确认将生成最终成绩库,还可能修改,请点击取消")) { // 如果点击确定 ,那就在这里添加相关逻辑 alert("保存成功") } else { //如果点击取消,那就再这操作相关逻辑 alert(