admin 管理员组文章数量: 887031
2024年1月14日发(作者:activity和action的区别)
Coolite Toolkit学习笔记一:AjaxEvent、AjaxMethod和Listeners
一:AjaxEvent
Coolite Toolkit所提供的AjaxEvent可以应用在很多的控件中,实现异步提交等相关功能。比如使用在Coolite Toolkit的Button控件中,通过该控件提供的机制就可以方便的使用。
1
7
8
9
10
11
如果需要使用在标准控件或是其他的html标签元素上,则需要通过Coolite
Toolkit所提供的ScriptManager来实现了,下面简单演示将AjaxEvent使用在官方的Button控件上。
通过上面这种方式,可以把AjaxEvent添加到任何的html元素上(比如:input,div,p,span等等)。
二:AjaxMethod
Coolite Toolkit所提供的AjaxMethod功能和 AJAX的PageMethod是一样的,使用非常简单,详细可参考下面的简单示例:
[AjaxMethod]
public
string PageMethod()
{
return
"调用了页面后置方法:PageMethod()";
}
通过Coolite Toolkit提供的thods.方法名直接调用后置方法。相互之间传递数据(简单文本串,对象,JSON)支持多种格式,这 点和 AJAX是一样的。除此之外,Coolite Toolkit还提供了更强大的页面方法调用功能,就是他可以调用母版页(MasterPage)和用户自定义控件(UserControl)里的方法。 如果要调用母版页的方法,则需要在对应的母版页里提供AjaxMethod方法接口,并为其通过AjaxMethodProxyIDAttribute配 置代理生成策略,如所示:
[AjaxMethodProxyID(IDMode = )]
public partial class MyMaster : Page
{
[AjaxMethod]
public string PageMethod()
{
return "调用了母版页的后置方法:PageMethod()";
}
}
前台页面调用:
<%@ Page Title="" Language="C#" MasterPageFile="~/" AutoEventWireup="true"
CodeBehind="" Inherits="Demo" %>
如果是调用用户自定义控件里的方法,方式和母版页相差不大,不同的是UserControl需要设置别名才能成功调用。如下示例:
[AjaxMethodProxyID(IDMode = , Alias = "UC")]
public partial class TimeControl : ntrol
{
[AjaxMethod]
public string PageMethod()
{
return ng();
}
}
客户端使用别名调用如下:
success:function(result)
{
(result);
}
});" />
三:Listeners
Listeners在本文前面就用到过,通过Listeners给Ext按扭添加了一个客户端方法Handler,用得多的也就是他的Click事件,其他的我现在也还没用到,这里小记一下。以后用到了他的其他特性后在补充上来。
注:本文内容参考于官方文档和示例整理而成,只当是自己记录的一份学习笔记,供大家一起交流学习心得。
Coolite Toolkit官方网站:/
Coolite Toolkit学习笔记二:服务器端Alert,Confirm,Prompt
一:Alert
Alert组件最简单的用法就是直接弹出一个消息提示框:
protected void Button_Click(object sender, AjaxEventArgs e)
{
("标题内容", "消息内容").Show();
}
如果我们需要在弹出的提示框点了“确定”以后要执行其他操作怎么办呢?这时候可以使用Alert方法的重载方法,通过JFunction指定一个客户端方法,点了“确定”后就指定相应的客户端JavaScript方法,使用如下:
protected void Button_Click(object sender, AjaxEventArgs e)
{
("标题内容", "消息内容", new JFunction { Fn = "JsMethod" }).Show();
}
Coolite Toolkit还为Alert提供了四中图标UI效果,他们分别是问题(Question)、警告(Warning)、错误(Error)和信息 (Informational),使用不同的参数将构建出不同的Alert显示风格。使用方法如下:
protected void Button_Alert(object sender, AjaxEventArgs e)
{
(new
{
Title = "图标提示框",
Message = "这个框带个图标",
Buttons = ,
Icon = ,
AnimEl = ID
});
}
图标的取值可以直接通过枚举设置,分别定义有:NONE、ERROR、INFO、QUESTION和WARNING。
除 了上面的应用外,还可以通过Configs来配置Alert的高级应用,比如配置确认对话框,根据不同选择执行不同的 AjaxMethod方法(下面代码里的NS为通过ScriptManager指定的客户端名称空间,其功能等同于
thods)。
protected void Button_Click(object sender, AjaxEventArgs e)
{
("标题内容", "消息内容", new sConfig
{
Yes = new Config
{
Handler = "()",
Text = "确定"
},
No = new Config
{
Handler = "()",
Text = "取消"
}
}).Show();
}
[AjaxMethod]
public void DoYes()
{
("操作提示", "你刚刚点了-确定").Show();
}
[AjaxMethod]
public void DoNo()
{
("操作提示", "你刚刚点了-取消").Show();
}
注:点了“确定”后直接执行服务端的另一方法没有实现出来,还望实现过的朋友指点,谢谢。
二:Confirm
上面通过Coolite Toolkit的扩展功能将Alert组件实现了Confirm的效果,其实Confirm自身的功能也是非常强大的,同Alert一样,最简单的使用则是直接弹出确认对话框。
protected void Button_Confirm(object sender, AjaxEventArgs e)
{
m("操作提示", "消息内容").Show();
}
如果要知道是点击了那一个操作按扭,则同样可以通过JFunction指定一个客户端的JavaScript方法用来接收操作结果。
protected void Button_Confirm(object sender, AjaxEventArgs e)
{
m("操作提示", "消息内容",
new JFunction
{
Fn = "ShowResult"
}).Show();
}
Confirm同样也可以定制根据操作调用AjaxMethod,实现方式和本文前面的Alert实现方式一样。
三:Prompt
Prompt可应用于简单的是数据录入,Coolite Toolkit里的服务端Prompt使用非常简单,同上面Alert和Confirm一样通过JFunction指定客户端方法处理操作结果。
protected void Button_Prompt(object sender, AjaxEventArgs e)
{
("数据录入", "请在下面录入数据",
new JFunction
{
Fn = "showResultText"
}).Show();
}
以上实现的是单行的Prompt,Coolite Toolkit也提供了多行支持,使用如下:
protected void Button_Prompt(object sender, AjaxEventArgs e)
{
(new
{
Title = "数据录入",
Message = "请在下面录入数据:",
Width = 300,
Buttons = EL,
Multiline = true,
AnimEl = ID,
Fn = new JFunction { Fn = "showResultText" }
});
}
上图效果主要是通过()方法,通过该方法还可以定制许多我们需要的UI效果,比如说定制一个进度条效果,其实现为如下代码片段:
protected void Button_Wait(object sender, AjaxEventArgs e)
{
(new
{
Title = "请等待",
Message = "系统正在加载,请等待",
ProgressText = "系统加载中",
Width = 300,
Progress = true,
Closable = false,
AnimEl = ID
});
ongAction();
}
private void StartLongAction()
{
n["Task1"] = 0;
serWorkItem(LongAction);
ask("Task1");
}
private void LongAction(object state)
{
for (int i = 0; i < 10; i++)
{
(1000);
n["Task1"] = i + 1;
}
("Task1");
}
protected void RefreshProgress(object sender, AjaxEventArgs e)
{
object progress = n["Task1"];
if (progress != null)
{
Progress(((int)progress) / 10f, "");
}
else
{
sk("Task1");
();
ipt("ProgressResult();");
}
}
TaskID="Task1" Interval="1000" AutoRun="false">
Coolite Toolkit学习笔记三:基本控件之Button、TextField、DataField、ComBox
Button、TextField、DataField、ComBox这些控件好象也没什么好学的,任何一个学过的朋友都应该 会使用这些控件,Coolite Toolkit里的这些控件相比标准的控件提供了需要特殊的功能,比如DataFiled控件在.NET Framework里则是没有的,这些控件在系统开发中是非常有用的。
一、按扭(Button)控件
Coolite Toolkit里同样提供有四种Button控件,他们分别是Button、ImageButton、LinkButton和SplitButton。Button在前两篇笔记里都有使用到,这里就简单记录一下,触发同步事件:
使用Listeners为控件添加客户端方法:
使用AjaxEvents为控件添加Ajax处理方法:
/******************************************************/
protected void Button3_Click(object sender, AjaxEventArgs e)
{
("标题", "显示的消息内容").Show();
}
另外还有一个重要的特性就是按扭菜单项,可以给一个按扭添加菜单选项,使用如下:
关于按扭(Button)控件,目前我也就了解了这些,也只用到了这些,更多高级的内容待需要的时候在研究。
ImageButton 使用得也比较多,通过设置按扭的图片让按扭呈现出不同的风格,不过Coolite Toolkit的ImageButton控件和微软的有些不一样,微软的只能设置一张显示图片,如果要做动态交互效果只能通过样式或脚本程序去控 制,Coolite Toolkit却直接提供了对外属性,只需要简单设置就可以完成一个丰富的界面交互效果的按扭,其功能点和ext:Button是一样的,如下所示:
runat="server" ImageUrl="button/" OverImageUrl="button/" DisabledImageUrl="button/" PressedImageUrl="button/">
SplitButton没感觉到有什么特别之处,可能我学艺未深吧~~~~
二、TextFiled控件
TextFiled控件等同于里的 TextBox控件,主要进行文字数据录入或显示,反之就是NumberFiled控件专们用来进行数字录入的。TextFiled控件的使用在简单不过 了,这里我想提的是他的几个特性属性:EmptyText属性用来设置或获取显示输入数据提示信息。Note属性用来设置或获取静态描述信息,并可以通过 NoteAlign属性设置信息的显示位置。
三、DataFiled控件
这个控件作用比较大,很多地方都用得到。直接通过其SelectedData属性得到所选择的日期。效果如下:
四、ComboBox控件
ComboBox 控件的基本功能和.NET标准控件的DropDownList控件相同,不同之处在于DropDownList只能选择,不能进行编辑录入,如果用户需要 一个既可手工输入又可以选择的功能来做条件筛选,DropDownList则实现不了,Coolite Toolkit正好弥补上了DropDownList的不足。使用方式两者都相差不大,下面是一个简单的示例:
另 外Coolite Toolkit的ComboxBox还提供了Triggers和Listeners,通过这两个集合可以为ComboBox定制更高级的应用。根据字面意 思就可以猜到,一个触发器一个监听器,那么这两者配合能实现什么样的效果呢?先看看下图:
上面表示了ComboxBox的三种状态:未输入和未选择状态、下拉选择项状态和选中项后的状态,要实现这个效果就需要用到Triggers和Linteners这两个特性了,详细如下代码片段:
五、其他
出了上面所提到的常用控件外,还有如TriggerField、TimeFiled、MultiField、DatePiker等等一系列的控件作用也是非常大的,现在没用到先标记于此,日后需要的时候在研究研究他们的特性功能点。
/Question/Coolite-Toolkit-Study-Notes-4
Coolite Toolkit学习笔记四:容器控件之FiledSet、Panel和Window
0
一、FieldSet控件
FieldSet控件在开发中使用率还是很高的,毕竟Web中微软没有提供Group控件,通常都是使用FieldSet来进行表单等界面布局分组。在Coolite Toolkit中则专门提供了这样一个控件,同时还为其附加了很多其他的功能属性和方法。
日期: |
|
Title、Height以及Width这些最基本的属性完全可以不去记忆,Collapsible属性是用来设置FieldSet是可折叠状态。上面代码片段的远行效果如下所示:
二、Panel控件
前 面分析了FieldSet控件,可以用来做界面布局的分组,以及通过相关属性设置使其成为更为高级的应用操作。FieldSet所具备的这些特性对于 Panel来说也是同样具备的。在里也提供得有Panel控件,那么Coolite Toolit所提供的相比里的Panel有什么特色呢?呵呵,特色可多了,请你继续看下面......
Panel控件我个人理解就是一个容器控件,不用它我自己随便通过一个html标签然后设置其runat="server"一样的可以达到等同的效果。 Coolite
Toolkit所提供的Panel同样如此,只是他在的Panel基础上扩展了一些
常用的功能点,包括动态设值,外嵌其他的Web也面等多 项功能。
<%--
Collapsible="true" Width="300">
同FieldSet控件一样直接提供了公开属性设置是否允许折叠。如上html代码片段,在
标签里可以放置我们需要在界面上呈现是元素,除此之外它还提供了一个属性(Html),通过该属性也可以设置其显示内容,如下: Collapsible="true" Width="300" Html="通过HTML属性设置其显示的内容
">
在使用该控件的时候需要注意,虽然
标签和Html属性都可以设置控件所呈现的内容,但是这里有一定的约束,标签和Html属性不能同时使用。
通过属性设置其要呈现的内容,控件还提供了属性用来设置其将自动加载的数据(比如一个页面,类似与IFrame的功能)。
Width="400px" Collapsible="true">
除了上面的实现方式外,也可以通过公开的方法LoadContent()实现动态加载一个页面呈现出来。
protected void Page_load(object sender, EventArgs e)
{
ntent("", true);
}
前面提到iframe,这个东西在我们平时开发中的使用率也是非常高的,Coolite Toolkit那当然也不会遗忘他的存在,对Panel控件也提供了iframe的支持,Panel控件加载一个外部web页面也是可以以iframe的形式呈现的。
protected void Page_load(object sender, EventArgs e)
{
= "";
= ;
e = true;
}
同样可以在LoadContent()方法中设置加载模式:
ntent(new LoadConfig("", , true));
除了上述特性,Coolite Toolkit的Panel的折叠展开功能也有他独有的特性,通过Listeners可以设置让其在展开的时候加载指定的Web页面,折叠的时候
清除内容。
三、Window控件
窗体(Window)控件,这个控件多数时候是应用在做弹窗效果。很简单的说,我点一下按扭或是其他可同事件驱动的组件,立马给我弹出一个窗口出来,Window控件可以说是专门来解决这一技术需求。
Title="Title">
直接从工具箱里拖拽一个Window控件到界面上,默认是可折叠、可关闭且随着页面的加载而显示的。可以通过设置ShowOnLoad="false|true"属性使其在页面加载的时候显示与否。
在需要显示的时候可以通过调用其客户端API接口,也可以调用服务端API接口实现。
Title="Title" ShowOnLoad="false">
<%--
Window控件我个人理解他也是一个容器控件,只不过他比其他的控件使用更为灵活,功能更强大,比如动态显示和隐藏(Show,Hide)、可拖拽性(Draggable)、摸态(Modal)等。
Draggable="false" Modal="true" Title="摸态|不可拖拽应用示例" ShowOnLoad="false">
摸态|不可拖拽应用示例
不可拖拽:Draggable="false"
摸态:Modal="true"
<%--
/Question/Coolite-Toolkit-Study-Notes-5
Coolite Toolkit学习笔记五:常用控件Menu和MenuPanel
Coolite Toolkit里的Menu控件和其他的.NET Web控件不一样,如果只是设计好了Menu或是通过程序初始化菜单项,菜单是不会呈现在界面上的,因为Coolite Toolkit规定Menu控件需要一个容器来做依托,而这个让Menu依托的控件就是MenuPanel,下面拖拽出的MenuPanel控件所生成的 html编码:
从上面可以明显的看出,MenuPanel里可以放置菜单项(MenuItem),如果有子菜单,那么子菜单则对应于一个Menu控件,子菜单里的菜单项则又是通过菜单项(MenuItem)来体现。如下是我修改后的一个菜单html编码:
像Tree、Menu等类似的控件,我个人认为主要就是弄清楚他们内部的层次结构,不管是通过界面设计还是通过直接Code创建他们,最终得到的结果都是一样,如上菜单显示效果,同样可以通过如下程序代码来创建:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
CreateMenuPanel();
}
}
private void CreateMenuPanel()
{
MenuPanel menuPanel = new MenuPanel();
= "帐套管理";
= new Unit(180);
em addAccount = new em("新增帐套");
= ;
r = "JavaScript:='#';";
em whAccount = new em("维护帐套");
=;
em accountManage = new em("帐套管理");
= se;
subMenu = new ();
em backMenuItem = new em("备份帐套");
= seSave;
r = "JavaScript:('#')";
(backMenuItem);
em reMenuItem = new em("恢复帐套");
= seGo;
r = "JavaScript:('#')";
(reMenuItem);
(subMenu);
(addAccount);
(whAccount);
(accountManage);
= "onItemClick";
(menuPanel);
}
本笔记暂时记录于此,更多高级应用需要大家去挖掘,欢迎各位朋友留下自己的看法和使用心得。
/Question/Coolite-Toolkit-Study-Notes-6
Coolite Toolkit学习笔记六:常用控件Accordion、ToolBar、ToolTip
0
一、Accordion控件
Accordion的功能非常适用,使用很简单,轻轻松松的就可以构建一个可折叠的界面展示应用效果。相信大多数做开发的朋友都使用过
AJAX Control Toolkit,它里面也提供有Accordion控件,详细可以查看其在线示例。Colite Toolkit所提供的Accordion控件的使用和 AJAX Control
Toolkit里提供的Accordion差别不大,不同的是Coolite Toolkit的控件必须放
置在一个容器控件里(比如:Panel)。
- 新增帐套
- 维护帐套
- 帐套备份
- 帐套恢复
得到的效果如下,这个界面相比 AJAX Control Toolkit的Accordion要好看得多。
全部自己去定义里面的菜单项好象很麻烦,这里可以利用上一篇文章中介绍的MenuPanel来实现,个人感觉效果更好,更方便快速。
Code
关于怎么获取所点项的相关参数请查看本系列笔记第四篇。
二、ToolBar和ToolTip控件
工具栏到处可见,在我们的项目开发中同样也需要工具栏(ToolBar)以及动态提示(ToolTip),以方便用户操作。
Coolite Toolkit的ToolBar控件功能非常强大,除了实现上面这种最基本的工具栏外,还可以设计出功能更加强大的。准确的说Coolite Toolkit为很多控件都提供了许多的功能扩展功能,这类控件主要是Tree、Menu 等等之类的控件。
其他
/Question/Coolite-Toolkit-Study-Notes-7
Coolite Toolkit学习笔记七:常用控件TreePanel
Coolite Toolkit中的Tree控件和Menu控件一样不能独立使用,他们必须依托与容器控件,理所当然Tree控件就依托于TreePanel 控件了。TreePanel 提供了很多的集合属性,可用来定制非常丰富的切功能强大的树型界面。
从上图中可看出,TreePanel提供了许多的集合属性,包括事件、数据加载、按扭、自定义配置、根节点、工具栏、顶部和底部工具栏等等很多功能点。比如我们可以使用TopBar来定制一个树的顶部工具栏,如下代码片段:
Icon="BookOpen" Width="180">
如 上通过html标签的方式使用TreePanel的TopBar定义好了一个树的顶部工具栏,并实现了其单击的客户端事件,通过点击相应的按扭可实现树的 折叠和展开功能。 树通常都是有根节点的,我们可以使用Root属性来定义树的根节点,在一棵树
中,其根其实也是一个节点,根下的有子节点集合和子节点 等这样的类型结构,如下定义了一个根节点下有多个子节点的示例:
Icon="BookOpen" Width="180">
针对上图的示例,来扩充一下需求,根据歌曲演唱者对歌曲进行归类,从树的结构上来分析则是歌曲演唱者是歌曲列表下的子节点,歌曲是歌曲演唱者下的子节点。那么是下面这样的吗?
Icon="BookOpen" Width="180">
除 了构建树结果外,平时项目开发中重要的是使用结构里的数据,那Coolite
Toolkit的TreePanel里的树节点我们可以通过什么方式得到里面的数据呢,其实这一部非常简单,在本文前面我曾提到过,树是又不同的节点 (Node)组成,那么取值也是通过节点就OK了。可以通过控件的Listeners属性给控件注册一个事件,通过事件来获取所点击项的值,如下 图:
同样可以通过纯代码的方式来创建树,只不过相比通过设计来说要麻烦点,没有设计这样来的随心应手。关于树就简单记录于此,看过本文的朋友如果有什么疑问或是什么高的心得体会,欢迎留言讨论~~~~
/Question/Coolite-Toolkit-Study-Notes-8
Coolite Toolkit学习笔记八:常用控件TabPanel
记得在去年的一个产品开发中,公司老大要我们实现多标签选项卡的方式来呈现程序页面,当时没有成熟的主控框架,也没有好的技术文章可参考,凭着自己对需求文档上的描述理解,花了一周多时间自己吓整一通开发了一个系统主控框架出来。效果如下图:
关于这系统主控框架的开发我也通过两篇博文的方式分享,并提供了示例代码下载,有兴趣的朋友看直接查阅这两篇文章。
(一):业务系统设计之二:系统主控设计(上)
(二):业务系统设计之三:系统主控设计(下)
当时开发这一个东西确实耗了不少时间和精力,现在开发一个这样的东西可以很方便快速的实现了,Coolite Toolkit所提供的TabPanel就可以方便的解决上面这种需求。
TabPanel控件使用非常简单,但是功能却非常强大,它同MenuPanel、TreePanel一样提供了很多的集合属性,可以定制出丰富的应用。其中用得最多的就是他的Tabs属性,用于定义子标签选项,可参考下图所示:
其中的代码如下代码片段,下图为运行效果截图:
TabPanel控件学习
TabPanel 最灵活的是动态的创建子标签选项,想了解这个创建过程的实现原理请查阅我之前写的两篇文章(本文前面有文章连接),需要注意的是不能通过同步的事件驱动去 创建,一但页面PostBack新创建的所有标签选项将被全部清除。如果一定要通过服务端后台代码去动态创建,可使用Coolite Toolkit所提供的AjaxEvent机制。
protected void CreataTab_Click(object sender, AjaxEventArgs e)
{
var tab = new Tab("通过AjaxEvent新增Tab");
ex = ("11");
= "tabID";
= "";
e = true;
= ;
(tab);
Tab = tab;
}
个人觉得通过同步方式创建页面总是会晃动一下,闪着让人很不爽。推荐通过客户端动态添加子标签选项的方式创建,TabPanel提供了相应的客户端API来完成这些操作。
通过JavaScript方法addTab()方法动态创建,三个参数分别为:TabPanel控件ID,新创建的Tab的ID,西创建的Tab所呈现的内容路径。
客户端创建的方式是纯Ext的操作方式,TabPanel提供了API可直接获取指定id的子Tab是否存在,使用这一功能就可以完美的处理互斥,以创建出唯一的Tab子标签选项。
TabPanel 使用得多的就是用来处理多标签选项卡,另外多数时候是用作容器,其容器功能和Panel、Window等基本相同。就拿上一篇文章中创建的树做示例吧,现 在需要将树显示在TabPanel的一个子标签选项里,可以直接调用TabPanel的客户端API方法addTab将一个存在的容器类型控件添加到 TabPanel,使其成为TabPanel的子Tab。
本文就简单介绍于此,更多、更高、更高级、更适用的应用需要大家的努力挖掘,欢迎广大朋友排砖指正,相互交流学习。
/Question/Coolite-Toolkit-Study-Notes-9
Coolite Toolkit学习笔记九:表单布局控件FormLayout与FromPanel
本系列笔记的前面几篇分别介绍了Coolite Toolkit的常用控件,从这一篇起将介绍Coolite Toolkit所提供的各种不同的界面布局控件,本篇将要介绍的布局控件是FormLayout和FormPanel,通常使用他们来进行表单界面的布 局。
FormLayout在我们平时开发中使用频率非常高,使用它可快速、方便的实现表单界面布局,以及使用一些其他控件自身的特性组合起来实现丰富强大的UI界面。下面通过一个简单示例来体验FormLayout的强大功能。
Coolite Toolkit规定FromLayout控件必须放置在一个容器控件里,如上则将其放置在Panel控件里,通过FormLayout布局了一个用户登录界面,运行效果如下所示:
如 上只是实现了最基本的界面布局,而且效果并不是很理想。OK,下面基于这个上面来做一些调整。现在要实现文本框没有输入数据的时候则提示用户输入,并为其
加上非空验证,通过AjaxEvents提供表单提交的事件处理函数,通过Listeners提供表单的提交前的客户端验证功能。相关代码如下:
FieldLabel="用户名" EmptyText="请输入用户名" AllowBlank="false" BlankText="用户名不能为空!"/> FieldLabel="用户密码" EmptyText="请输入登录密码" InputType="Password" AllowBlank="false" BlankText="用户密码不能为空!"/> return false; }" /> 仔 细看来FormLayout 控件使用是非常简单的,表单里面具体要设计为什么样子的,最终还得看使用的其他相关控件。在前面提到FormLayout控 件需要放置在一个容器内部,其实Coolite Toolkit专们为FromLayout控件提供了一个容器控件FromPanel于之搭配,其使用方法和Panel基本相同,通过 FromPanel+FromLayout组合设计出来的UI界面效果更佳。如下邮件发送表单示例: Frame="true" Title="邮件发送表单" Width="450"> AllowBlank="false" BlankText="邮件主题不能为空"/> ButtonText="选择附件" /> 需 要注意的就是FormLayout 的LabelWidth属性,很多新手朋友在学习Coolite Toolkit的FromLayout的时候,都遇到字段名和TextBox中间存在很长的距离怎么也调不了,其实这个距离是可以调整的,通过设置 LabelWidth属性值既可。
版权声明:本文标题:EXT.NET所有的控件使用介绍 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1705215927h477254.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论