class CustomActionGrid < Netzke::Basepack::GridPanel
component :show_form do
{
:lazy_loading => true,
:class_name => "Netzke::Basepack::GridPanel::RecordFormWindow",
:title => "Edit #{data_class.model_name.human}",
:button_align => "right",
:items => [{
:class_name => "Netzke::Basepack::FormPanel",
:model => config[:model],
:items => fields_for_form,
:persistent_config => config[:persistent_config],
:bbar => false,
:header => false,
:mode => config[:mode]
# :record_id gets assigned by deliver_component at the moment of loading
}.deep_merge(config[:edit_form_config] || {})]
}.deep_merge(config[:edit_form_window_config] || {})
end
def fields_for_form
[{:layout => :hbox,
:label_align => :top,
:border => false,
:defaults => {:border => false},
:items => [{
:flex => 2,
:layout => :form,
:defaults => {:anchor => "-8"},
:items => [
{:xtype => 'fieldset', :title => "Basic Info", :checkboxToggle => true, :items => [
:first_name,
{:name => :last_name}
]},
{:xtype => 'fieldset', :title => "Timestamps", :items => [
{:name => :created_at, :disabled => true},
{:name => :updated_at, :disabled => true}
]},
:name]
},{
:flex => 1,
:layout => :form,
:defaults => {:anchor => "-8"},
:items => [:email, :created_at, {:name => :updated_at, :xtype => :datetimefield}]
}]}]
end
action :show_details, :text => "Show details", :disabled => true
action :show_form, :text => "Show form", :disabled => true
# For stand-alone testing
def default_config
super.merge(
:model => "Clerk",
:bbar => nil,
:tbar => [:show_details.action, :show_form.action]
)
end
# overriding 2 GridPanel's methods
def default_bbar
[:show_details.action, :show_form.action, "-", *super]
end
def default_context_menu
[:show_details.action, :show_form.action, "-", *super]
end
js_method :init_component, <<-JS
function(){
#{js_full_class_name}.superclass.initComponent.call(this);
this.getSelectionModel().on('selectionchange', function(selModel){
this.actions.showDetails.setDisabled(selModel.getCount() != 1);
this.actions.showForm.setDisabled(selModel.getCount() != 1);
}, this);
}
JS
js_method :on_show_details, <<-JS
function(){
var tmpl = new Ext.Template("<b>{0}</b>: {1}<br/>"), html = "";
Ext.iterate(this.getSelectionModel().getSelected().data, function(key, value){
html += tmpl.apply([key.humanize(), value]);
}, this);
html += this.getSelectionModel().getSelected().data['id']
Ext.Msg.show({
title: "Details",
width: 300,
msg: html
});
}
JS
js_method :on_show_form, <<-JS
function(){
var selModel = this.getSelectionModel();
var recordId = selModel.getSelected().id;
this.loadComponent({name: "show_form",
params: {record_id: recordId},
callback: function(form){
form.on('close', function(){
if (form.closeRes === "ok") {
this.store.reload();
}
}, this);
},scope: this});
}
JS
# 利用参数改变组件的配置.
def deliver_component_endpoint(params)
components[:show_form][:items].first.merge!(:record_id => params[:record_id].to_i) if params[:name] == 'show_form'
super
end
end
分享到:
相关推荐
- 应用场景:如果你正在寻找一个增强版的表格控件,或者需要XP风格的界面,XPTable可能是一个很好的选择。它可能包含详细的文档和示例代码,帮助你快速集成和定制。 总的来说,C#的dataGridView控件提供了基础的...
在这篇文章中,我们要讲述如何利用AngularJS的Directive功能来自定义一个表格。 首先,我们要明确什么是AngularJS中的Directive。Directive是AngularJS的最小指令性组件,它可以通过添加属性、元素、注释、或者类来...
本文将深入探讨如何自定义一个表格控件,以满足特定的业务需求,如动态添加、删除行以及支持编辑功能,并且能够与外部的DataTable对象进行数据交互。我们将基于提供的文件`TableControl.xaml.cs`和`TableControl....
在提供的`tableviewdemo`文件中,很可能包含了一个简单的表格示例项目,通过查看其代码,可以更直观地了解如何在实践中实现这些功能。在阅读博客和分析代码的过程中,你将对iOS中的自定义导航栏和表格使用有更深的...
通过定义一个自定义表格模型,可以构造和使用表格。该模型可以大大方便了对表格中数据的操纵。 知识点一:JTable组件 JTable是Java Swing开发工具包中的表格组件,用于显示大量数据,并且可以与数据库中数据进行...
这个表格类就是这样一个自定义控件,它可能继承自MFC(Microsoft Foundation Classes)的CWnd或者CControlBar类,并扩展了标准表格控件的功能。 2. **翻译和注释**:为了提高代码的可读性和易用性,开发者为大部分...
通过这种方式,我们可以创建一个既美观又实用的自定义表格,用户点击单元格后可以触发相应的操作,同时也能灵活地调整列宽以适应不同的显示需求。参考链接中的博客文章会有更具体的实现细节和示例代码,有助于深入...
其中,layui table是layui框架中的一个核心组件,用于展示数据表格。本教程将深入探讨如何利用layui table实现自定义列,以及如何保存和应用这些自定义模板。 一、layui table组件基础 layui table组件提供了灵活...
本例程主要关注的是“自定义高级表格边框样式”,这是一个关于界面美化和用户体验提升的技术点。 在Windows编程中,窗口组件的边框样式通常是系统预设的,但通过调用系统API(应用程序接口)可以实现对这些默认样式...
"完整版自定义高级表格边框样式例程.rar" 提供的正是这样一个资源,它包含了实现这一功能的详细代码或步骤,帮助用户在自己的应用中创建独特的表格样式。 首先,我们要理解表格边框样式的概念。在电子表格软件如...
在C#编程中,开发一个自定义的动态滚动表格是一个常见的需求,特别是在处理大量数据时,需要保持表头可见而让表体滚动。本项目"**C#自定义动态滚动表格(表头固定,表体从下往上滚动)**"正是为了解决这样的问题。它...
因此,我们需要基于这些基础视图自定义一个表格View。自定义视图通常涉及继承View或ViewGroup,并重写onDraw()方法来绘制我们的内容。 `Canvas`和`Paint`是Android图形绘制的核心工具。Canvas是画布,我们可以在其...
表格是自打我进公司以后就使用的控件,起初使用的是ScrollablePanel,从一开始的被花式吊打,到后期的熟练使用。 大佬写的控件确实给我的工作带来了极大的方便,不过还是有些问题存在: 无法实现不规则的表格 其...
4. **数据适配器(Adapter)**:Adapter是数据和视图之间的桥梁,我们需要实现一个自定义的Adapter,重写 onCreateViewHolder() 和 onBindViewHolder() 方法,以填充数据到每个单元格。 5. **监听器**:为了实现...
尤其在VC2008的开发环境中,拥有一个美观且功能丰富的自定义表格类可以帮助开发人员轻松地构建起复杂的应用程序界面。本文将详细探讨“vc2008 漂亮 厉害 自定义表格类”的设计理念、功能特性以及使用优势。 首先,...
易语言源码高级表格自定义计算公式.rar 易语言源码高级表格自定义计算公式.rar 易语言源码高级表格自定义计算公式.rar 易语言源码高级表格自定义计算公式.rar 易语言源码高级表格自定义计算公式.rar 易语言源码...
在本项目中,"jquery动态表格自定义分页.zip"是一个包含使用jQuery和CSS实现动态表格分页功能的示例。下面将详细讲解这个项目的关键知识点: 1. jQuery:jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历...
1.自定义了一个表格View(TcTableView),支持继承重载相关虚函数, 2.TcTabelView支持设置多行横向表头(默认2行), 3.可以添加多张表格,每个表格是独立的,它们都有属于自己的自定义表头。 4.表头的右键操作我是自己写...
本教程将详细讲解如何创建一个自定义的模型来实现这一目标,以便在表格视图(QTableView)中高效地显示大量数据。 首先,了解QAbstractItemModel是Qt中的基础表格模型类,它提供了数据和视图之间的接口。自定义...
本文将详细讨论如何实现一个自定义表格,该表格支持XIB布局和代码布局,并且具备锁住双向表头的功能。这个特性对于显示大量数据且需要用户横向和纵向滚动时保持表头可见的情况尤其有用。 首先,我们要理解`...