基础知识 - 属性

Radzen中有两种属性:页面属性和组件属性。



页面属性 Page properties

页面属性用来存储应用程序数据,比如数据库查询结果,用户输入(用户键入的文本)或开发人员所需的任何其他数据。



全局属性 Global properties

全局属性类似于页面属性,但是区别是全局属性在应用程序的所有页面中都可以使用。



组件属性 Component properties

组件属性用来配置行为,比如按钮显示的文本以及DataGrid的项目。

组件属性可以设置为页面属性。 在这种情况下,我们说组件属性是数据绑定(data-bound)到页面属性的。



创建属性 Create property

要创建页面属性,需要处理当前页面的Load事件并使用Set属性操作。 您必须设置属性名称(以便以后使用)和值。

1. 在Radzen中打开一个页面(或创建一个新页面)。

2. 单击设计器中的空白区域,或从“选择”下拉列表中选择“Page”。 这将在属性网格中显示页面事件。

3. 添加一个新的Load事件的Handler。 初始化显示页面时触发。

4. 将操作的类型设置为Set属性。

5. 给属性命名并设定一些值。 例如,将Name设置为counter并将Value设置为0。这将创建counter属性并将其值设置为零。



属性名称 Properties Name 限制

页面属性映射到Blazor应用程序中的C#类属性。 因此,它遵守某些命名限制:

1. 不能以数字开头。

2. 不能包含空格。

3. 不能以C#语言关键字命名:new,class,bool,var等。

4. 不能以现有数据源命名(数据源隐式定义为属性)。

5. 不能以现有组件命名(组件也隐式定义为属性)。



显示属性值

一个常见的任务是向您应用程序的用户显示属性值。 在Radzen中,这是通过将组件属性数据绑定到页面属性来完成的。

Label组件可以显示文本或数字属性(类似于我们在“创建属性”部分中创建的属性)。

1. 从工具箱中拖动一个Label组件,并将其拖放到页面标题之后。

2. 点击“文字 Text”属性旁边的“链接 Link”按钮。 这将打开“属性选择器 Property picker”对话框。

3. 选择计数器属性,然后单击确定。 这会将标签的Text属性设置为 ${counter}。

现在,标签组件的文本已数据绑定到计数器页面属性。 如果counter属性更改,则标签文本将更新并显示最新值。

但是,这种 ${counter} 语法是什么? 这称为表达式。

表达式有一些重要的用法:

1. 允许Radzen显示带有可用属性名称的建议框。

2. 启用Radzen可以生成正确的代码,而与上下文(.cs或.blazor文件)无关。

3. 隐藏目标框架的一些细节。

上面的示例在您运行应用程序时生成以下Blazor代码:<RadzenLabel Text="@($"{counter}")" />



更新属性值

要更新属性的值,需要再次使用Set属性操作。 我们添加一个按钮来更新属性值。 每当用户单击按钮时,计数器属性都会增加。

1. 从工具箱中拖动一个Button组件,并将其拖放到Display属性值的Label之后。

2. 将按钮的文本属性设置为“Increment”。 请注意,这次我们没有使用 ${Increment}。 我们将按钮的文本设置为文字值 Increment。

3. 处理按钮的Click事件。 添加类型为Set属性的新操作。

4. 将名称设置为counter,将值设置为 ${counter} + 1;

运行应用程序。 单击按钮可增加计数器属性,标签将显示其当前值。 发生这种情况是因为标签的文本通过$ {counter}表达式数据绑定到counter属性。

${counter} + 1表达式使counter属性的值递增。 它生成以下C#代码 counter = counter + 1;。

事件处理文章中提供了有关Set属性操作和Radzen支持的其他操作类型的更多信息。



获取用户输入

在页面属性中获取用户输入是Radzen应用程序中的另一项常见任务。可以做到这一点的组件是:TextBox,Numeric,DropDown等等。

下面的示例演示如何将用户键入的文本存储在page属性中。

首先添加一个页面属性,该属性将存储文本。

1. 从“创建”属性中执行步骤1-3。

2. 将“Name”设置为text,将“Value”设置为“”(空字符串)。这将创建一个名为text的新页面属性,其值为“”(空字符串)。

然后添加一个TextBox组件,并将其Value属性数据绑定到刚创建的文本页面属性。输入组件(例如TextBox)的Value属性是特殊的。当用户更改组件值(例如在TextBox中键入内容)时,它将更新与数据绑定的页面属性。

1. 将TextBox组件拖放到页面标题之后。

2. 单击“Value”属性旁边的齿轮图标,以填充“属性选择器 Property picker” 。

3. 选择文本属性。这会将TextBox的Value绑定到页面的text属性。

Radzen将会生成的Blazor代码:<RadzenTextBox @bind-Value="@text" />。

我们还要显示用户输入的内容!

1. 将一个Button组件拖放到TextBox之后。

2. 将按钮的文本设置为显示文本。

3. 添加Click事件新的Handler。

4. 将类型设置为显示通知(Show notification)。

5. 将“严重性 Severity”设置为“信息 info”,将“摘要 Summary”设置为“文本”,最后将“详细信息Detail”设置为“你输入了: ${text}”。

单击按钮将显示文本属性的值。 让我们运行该应用程序



从数据源中获取数据

从数据源(数据库或其他)获取数据并将其显示给用户是另一项常见任务。 尽管脚手架和“新建页面”向导对此提供了很大帮助,但让我们来看看它们在幕后的作用。

按照快速入门中的说明使用Radzen示例数据源

然后,调用数据源的方法(Invoke data source method)并将其结果存储在page属性中。

1. 添加新的页面Load事件Handler。

2. 将类型设置为调用数据源方法(Invoke data source method),将操作(Operation)设置为getOrders。

3. 使用Set属性操作处理then事件。 将名称设置为订单,将值设置为 ${result}。 这会将getOrders数据源方法(data source method)(作为结果隐式属性)的响应存储在orders属性中。

页面加载时,它将调用getOrders方法,然后将orders属性设置为响应。

生成的 C# 代码如下所示:

var sampleGetOrdersResult = await Sample.GetOrders();

orders = sampleGetOrdersResult;

让我们在DataGrid组件中显示订单。

1. 从工具箱中拖动一个DataGrid组件。

2. 将其数据(Data)属性设置为订单。

3. 打开数据网格的列(Columns)属性。 单击自动生成按钮为Order实体的每个属性生成一列。

运行应用程序时,您应该看到一个显示所有订单的DataGrid。

由于在DataGrid中显示数据是非常普遍的要求,因此Radzen提供了一些快捷方式:

1. 新建页面向导New Page wizard有一个CRUD模板。 它创建了三个页面:一个页面在DataGrid中显示数据,一个页面用于插入新数据项,另一个页面用于编辑现有数据项。

2. 脚手架允许Radzen 专业版订阅用户和企业版订阅用户为整个数据库创建有效的CRUD应用程序。

3. 最后,DataGrid的Data属性编辑器允许您快速指定提供数据项的数据源方法。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354