ExtJs表格点击超链接获取行的值

news/2024/7/5 6:32:47

 grid双击事件,并得到单元格的值,以上我试了下好像不行,最终我这样写了

grid.addListener('rowdblclick', function (sm, rowIndex, e) {
var selectionModel = grid.getSelectionModel();
var record = selectionModel.getSelected();
alert(record.data['UserName']);
});

 

 

 

 

 

menuDisabled:true表示单列不可排序
enableHenu:true所有列不可排序
renderer:function(v)
{
    return v.link(v);
}


ExtJs表格
2009年11月09日 星期一 00:48
行选择模式:

Js代码
var rowcount = grid.getSelectionNode().getSelections();

var rowcount = grid.getSelectionNode().getSelections();
可以获取全部选中的记录,得到的rowcount将是一个Array,比如想获取sex列的数据,语句如下

Js代码
var strsex = rowcount[i].get(‘sex’);

var strsex = rowcount[i].get(‘sex’);
单元格选择模式


如果在GridPanel的配置属性增加sm属性如下

Js代码
sm:new Ext.grid.CellSelectionModel();

sm:new Ext.grid.CellSelectionModel();
则表格的选择模式为单元格选择模式。当单击时将选中对应的某一个单元格,而不是默认的选择某一行。选择方式如下

Js代码
var cell = grid.getSelectionNode().getSelectedCell();

var cell = grid.getSelectionNode().getSelectedCell();
得到的cell记录了当前选择的行(cell[0])以及列(cell[1]).可以通过一下语句得到该单元格数据

Js代码
var colname = grid.getColumnModel().getDataIndex(cell[1]); //获取列名
var celldata = grid.getStore().getAt(cell[0]).get(colname); //获取数据

var colname = grid.getColumnModel().getDataIndex(cell[1]); //获取列名
var celldata = grid.getStore().getAt(cell[0]).get(colname); //获取数据
getStore():获取表格的数据集
getAt():获取该数据集cell[0]行
get():获取该行colname的数据


2) 为表格增加链接



有时我们需要为表格中的某一列添加一个链接。可以利用renderer配置属性为该列添加html
如下:{id:'3',header:'名称',dataIndex:'name',renderer:DomUrl},
定义DomUrl方法



Js代码
function DomUrl(value){
return "<a href=>"+value+"</a>";
}

function DomUrl(value){
return "<a href=>"+value+"</a>";
}
如果表格内的数据是一个链接如:www.sina.com这样写法自然没有问题,但是大多数时候我们在表格中不会直接写一个链接,如果又需要根据单元格内容动态为链接添加几个参数。那这种写法就几乎没有什么用了。因为这个属性是在表格初始化的时候定义好的,而且表格初始化之后这个属性无法改变,也就是只读属性。


处理方法如下:
定义一个全局变量,初始值为0;DomUrl函数如下

Js代码
function DomUrl(value){
var row = grid.getSelectionModel().selectRow(startrow);//选中当前行
var rownum = grid.getSelectionModel().getSelected();//获取当前行
startrow ++;
var strurl = "abc.jsp?id=" + rownum.get('id');//获取当前选中行的值,并组织链接字符串
return "<a href='"+strurl+"'>"+value+"</a>";
}

function DomUrl(value){
var row = grid.getSelectionModel().selectRow(startrow);//选中当前行
var rownum = grid.getSelectionModel().getSelected();//获取当前行
startrow ++;
var strurl = "abc.jsp?id=" + rownum.get('id');//获取当前选中行的值,并组织链接字符串
return "<a href='"+strurl+"'>"+value+"</a>";
}
不过不要忘记在下次提交的时候将startrow赋值为0。


3) 表格的属性


表格的属性分为配置属性(在操作表格时无法修改),以及其他可读写属性,方法,以及事件。如下:


配置属性



a) activeItem:渲染布局时激活的子元素。
b) applyTo:指定渲染对象。
c) autoDestroy:当容器的子元素从容器中移除时是否自动销毁。
d) autoExpandColumn:指定自动填充表格剩余区域的列id
e) autoExpandMax:可自动扩张的最大宽度。
f) autoExpandMin:可自动扩张的最小宽度
g) autoHeight:自动扩充高度
h) autoShow:是否自动显示
i) autoWidth:自动扩充宽度
j) bbar/tbar:底部/顶部状态栏
k) bufferResize:容器再布局的缓冲频率
l) colModel/cm:列模式
m) cls:组件的额外css格式。
n) collapsible:是否显示快捷隐藏按钮
o) defaults:指定默认配置。
p) disableSelection:是否禁止选择表格行或列
q) enableDragDrop:是否允许表格列的拖放操作。
r) enableHdMenu:是否显示表格列的菜单。
s) frame:边框是否显示
t) loadMask: 是否显示加载动画
u) selModel/sm:表格选择模式
v) store:表格数据集
w) stripeRows:是否显示分隔线。
x) title:表格标题


方法


a) getColumnModel():得到表格列模型
b) getGridEl():得到表格下的元素
c) getPosition():得到组件的当前位置,返回一个数组
d) getSelectionModel():得到选中模型
e) getSize():得到组件大小
f) getStore():得到组件的数据集
g) getView():得到表格的GridView对象。
h) hide():隐藏当前组件
i) isVisible():判断当前组件是否显示
j) setDisabled( Boolean):设置组件的可用性
k) un():解除组件的监听
l) on():为组件添加监听
on ( String eventName, Function handler, [Object scope] )
eventName:添加监听的名称
handler:事件处理函数
scope:事件响应的作用域,包括scope,delay,single,buffer。

----------------------------
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>My JSP 'MyJsp.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">   
    <script type="text/javascript" src="<%=path%>/js/ext-base.js"></script>
    <script type="text/javascript" src="<%=path%>/js/ext-all.js"></script>
    <link rel="stylesheet" type="text/css" href="<%=path%>/resources/css/ext-all.css">
    <script type="text/javascript">
Ext.onReady(function(){
    Ext.QuickTips.init();
    Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
    var myData = [
        ['3m Co',                               71.72, 0.02,  0.03,  '9/1 12:00am'],
        ['Alcoa Inc',                           29.01, 0.42,  1.47,  '9/1 12:00am'],
        ['Altria Group Inc',                    83.81, 0.28,  0.34,  '9/1 12:00am'],
        ['American Express Company',            52.55, 0.01,  0.02,  '9/1 12:00am'],
        ['American International Group, Inc.',  64.13, 0.31,  0.49,  '9/1 12:00am']
    ];

    function change(val) {
        if (val > 0) {
            return '<span style="color:green;">' + val + '</span>';
        } else if (val < 0) {
            return '<span style="color:red;">' + val + '</span>';
        }
        return val;
    }

    function pctChange(val) {
        if (val > 0) {
            return '<span style="color:green;">' + val + '%</span>';
        } else if (val < 0) {
            return '<span style="color:red;">' + val + '%</span>';
        }
        return val;
    }

    var store = new Ext.data.ArrayStore({
        fields: [
           {name: 'company',    renderer:getHideValue},
           {name: 'price',      type: 'float'},
           {name: 'change',     type: 'float'},
           {name: 'pctChange',  type: 'float'},
           {name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}
        ]
    });

    store.loadData(myData);
   
    function getHideValue(value)
    {
        return "<a href=javascript:show></a>"
    }
   
    var grid = new Ext.grid.GridPanel({
        store: store,
        columns: [
            {
                id       :'company',
                header   : 'Company',
                width    : 160,
                sortable : true,
                dataIndex: 'company'
            },
            {
                id       :'p',
                header   : 'Price',
                width    : 75,
                sortable : true,
                renderer : 'usMoney',
                dataIndex: 'price'
            },
            {
                header   : 'Change',
                width    : 75,
                sortable : true,
                renderer : change,
                dataIndex: 'change'
            },
            {
                header   : '% Change',
                width    : 75,
                sortable : true,
                renderer : pctChange,
                dataIndex: 'pctChange'
            },
            {
                header   : 'Last Updated',
                width    : 85,
                sortable : true,
                renderer : Ext.util.Format.dateRenderer('m/d/Y'),
                dataIndex: 'lastChange'
            },
            {
                xtype: 'actioncolumn',
                width: 50,
                items: [{
                    icon   : 'resources/delete.gif',  // Use a URL in the icon config
                    tooltip: 'Sell stock',
                    handler: function(grid, rowIndex, colIndex) {
                    var rowcount = grid.getSelectionNode().getSelections();
                        var rec = store.getAt(rowIndex);
                        alert("Sell " + rec.get('company'));
                    }
                }]
            }
        ],
        stripeRows: true,
        autoExpandColumn: 'company',
        height: 350,
        width: 600,
        title: 'Array Grid',
        stateful: true,
        stateId: 'grid'
    });

    grid.render('grid-example');
});
    function show(value)
    {
        alert("jj");
    }
    </script>
  </head>
 
  <body>
   <div id='grid-example' align="center"></div>
  </body>
</html>


http://www.niftyadmin.cn/n/4588568.html

相关文章

为你的 Android 应用增加本地搜索功能

搜索是各种应用程序的一个基本功能需求. 在我们的案例中&#xff0c;我们拥有一个餐厅的应用程序&#xff0c;需要它能让用户可以方便和快速的搜索菜品清单&#xff0c;找到他们想要的东西. 在本文中&#xff0c;我将会描述我在对UI进行持续的维护时先我们现有的餐厅应用程序加…

function showURL(value, metaData, record){

columns:[{id:"id",header:"标单编号",width:120,sortable:true,dataIndex:"orderNo"},{header:"产品名称",width:180,sortable:true,dataIndex:"productName"},{header:"交易开始时间",width:150,sortable:true,…

MySQL字符型数据区分大小写

2019独角兽企业重金招聘Python工程师标准>>> MySQL字符型数据区分大小写 MySQL存储字符类型的值时默认是不区分大小写的。所以在select时如果不指定‘binary’关键字时&#xff0c;默认返回的值是忽略大小的。 1 CREATE TABLE test_t1 ( 2 VR_WEB_ACCOUNT varchar(1…

文本框添加事件

new Ext.Toolbar.TextItem(工具条&#xff1a;), { xtype:textfield, listeners: { render: function(p) { // Append the Panel to the click handlers argument list. p.getEl().on(click, function(p){ //处理点击事件代码 …

JS基础知识(数组)

1&#xff0c;数组 var colors new Array(); var colors new Array(20); var colors new Array(“red”, “blue”, “green”); var colors new Array(3); //create an array with three items var names new Array(“Greg”); //create an array with one item, the str…

单元格编辑后事件处理

//创建edgrid.js Ext.onReady(function(){ Ext.QuickTips.init(); // 格式化日期显示 function formatDate(value){ return value ? value.dateFormat(Y, M d) : ; } // 格式化性别显示,这是个 renderer, 渲染器 function formatSex(value) { return value ? "男" …

AjaxPro.dll,asp.net 前台js调用后台方法(无刷新)

1、什么是Ajax Ajax是异步Javascript和XML(Asynchronous JavaScript and XML)的英文缩写。"Ajax"这个名词的发明人是Jesse James Garrett,而大力推广并且使Ajax技术炙手可热的是Google。Ajax的核心理念在于使用XMLHttpRequest对象发送异步请求。 &#xff12;、为什么…

iOS适配UIViewView/WKWebView,H5生成长图,仿微信进度条

前段时间撸代码猥琐发育的时候&#xff0c;设计师老王给了张截图某宝APP上一个生成长图分享的功能&#xff0c;正好公司有这个需求&#xff0c;于是在立马开始操练起来&#xff01;在万能的度娘上搜集整理资料后发现很多文章介绍的方案对WKWebView不适用&#xff0c;iOS8.0后的…