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
分享到:
相关推荐
在实现自定义表格编辑时,我们需要创建一个QML组件来模拟表格的行为。这个组件可能会包含以下部分: 1. **Item布局**:使用QML的`Rectangle`或`Item`作为基础元素,定义表格的边界和背景色。然后,使用`Column`和`...
- 应用场景:如果你正在寻找一个增强版的表格控件,或者需要XP风格的界面,XPTable可能是一个很好的选择。它可能包含详细的文档和示例代码,帮助你快速集成和定制。 总的来说,C#的dataGridView控件提供了基础的...
在这篇文章中,我们要讲述如何利用AngularJS的Directive功能来自定义一个表格。 首先,我们要明确什么是AngularJS中的Directive。Directive是AngularJS的最小指令性组件,它可以通过添加属性、元素、注释、或者类来...
在提供的`tableviewdemo`文件中,很可能包含了一个简单的表格示例项目,通过查看其代码,可以更直观地了解如何在实践中实现这些功能。在阅读博客和分析代码的过程中,你将对iOS中的自定义导航栏和表格使用有更深的...
通过定义一个自定义表格模型,可以构造和使用表格。该模型可以大大方便了对表格中数据的操纵。 知识点一:JTable组件 JTable是Java Swing开发工具包中的表格组件,用于显示大量数据,并且可以与数据库中数据进行...
其中,layui table是layui框架中的一个核心组件,用于展示数据表格。本教程将深入探讨如何利用layui table实现自定义列,以及如何保存和应用这些自定义模板。 一、layui table组件基础 layui table组件提供了灵活...
本例程主要关注的是“自定义高级表格边框样式”,这是一个关于界面美化和用户体验提升的技术点。 在Windows编程中,窗口组件的边框样式通常是系统预设的,但通过调用系统API(应用程序接口)可以实现对这些默认样式...
本教程将深入探讨如何创建一个支持列合并、优化界面刷新、预留接口以及支持左右滚动的自定义表格。 首先,我们需要理解Android中的ListView组件。ListView是Android原生提供的一种用于显示大量数据的视图组件,它...
在C#编程中,开发一个自定义的动态滚动表格是一个常见的需求,特别是在处理大量数据时,需要保持表头可见而让表体滚动。本项目"**C#自定义动态滚动表格(表头固定,表体从下往上滚动)**"正是为了解决这样的问题。它...
至于自定义键盘的选择,代码中提到了一个名为`KeyBoard`的对象,它可能是用于弹出自定义输入法的组件。在适配器中,`keyBoard`字段被初始化,并在需要时调用。当用户点击可编辑的单元格时,如果`isReadOnly`为false...
本文将根据提供的标题“手把手教你做一个自定义表格标签”和标签“源码 工具”,探讨如何通过编写源代码创建一个自定义表格组件,并可能使用的工具。 首先,我们要理解表格标签在HTML中的基本结构,通常是`<table>`...
表格是自打我进公司以后就使用的控件,起初使用的是ScrollablePanel,从一开始的被花式吊打,到后期的熟练使用。 大佬写的控件确实给我的工作带来了极大的方便,不过还是有些问题存在: 无法实现不规则的表格 其...
4. **数据适配器(Adapter)**:Adapter是数据和视图之间的桥梁,我们需要实现一个自定义的Adapter,重写 onCreateViewHolder() 和 onBindViewHolder() 方法,以填充数据到每个单元格。 5. **监听器**:为了实现...
在VC2008开发环境中,自定义表格控件是一个常见的需求,因为它允许开发者创建具有高度定制化功能的用户界面。"vc2008 漂亮 厉害 自定义表格类"是一个专为这个目的设计的控件,它提供了一种美观且功能强大的方式来...
在本项目中,"jquery动态表格自定义分页.zip"是一个包含使用jQuery和CSS实现动态表格分页功能的示例。下面将详细讲解这个项目的关键知识点: 1. jQuery:jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历...
本教程将详细讲解如何创建一个自定义的模型来实现这一目标,以便在表格视图(QTableView)中高效地显示大量数据。 首先,了解QAbstractItemModel是Qt中的基础表格模型类,它提供了数据和视图之间的接口。自定义...
标题中的“一个管理平台(三层 自定义表格)”指的是一个基于三层架构设计的管理系统,其中包含自定义的表格功能。三层架构是一种常见的软件设计模式,它将应用逻辑分为三个独立的层:表现层(Presentation Layer)...