分享
 
 
 

VisualC#或VisualBasic创建Web应用程序(下)

王朝vb·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

测试项目

在“生成”菜单上,单击“生成解决方案”。

在“调试”菜单上单击“开始执行(不调试)”。

现在可以在 Web 窗体页上显示数据库中的数据并可在浏览器中查看该数据。Titles 列由超级链接组成。在本演练的稍后部分,您将能够单击这些超级链接之一,并显示特定书籍的详细信息。

在浏览器中查看 Titles 表

向 Web 窗体添加详细信息面板

详细信息面板使您可以查看有关所选书籍的其他信息,而不会使 DataGrid 充斥各种无关的材料。

在此步骤中,将添加 DataView,它使您可以筛选表以便只显示当前选定的行。

添加 DataView

切换到 Web 窗体页设计视图。

在“视图”菜单上单击“工具箱”。

将一个 DataView 控件从“数据”选项卡拖到 Web 窗体设计器表面。

一个新对象 dataView1 被添加到 Web 窗体设计器表面的非可视部分。

选择 dataView1 对象,并单击“视图”菜单上的“属性窗口”显示该对象的“属性”页。

展开“数据”节点并选择 Table 属性。单击下拉列表中的“titles”以链接该表,如下图所示。

名称 myDataSet1.titles 出现在 Table 属性的旁边。

dataView1 属性

在此步骤中,添加与数据列相对应的 Label 控件并将每个 Label 绑定到 DataView。

添加标签 (Label) 控件

对于所使用的每个明细字段(如 title-id、title、price 和 pubdate),将一个 Label 控件从工具箱的“Web 窗体”选项卡拖到 Web 窗体设计器表面。

选择每个标签并将其绑定到一个字段,如下所示:

单击“视图”菜单上的“属性窗口”以显示选定标签的“属性”页。

展开“数据”属性。

单击“DataBindings”(数据绑定)旁边的省略号 () 按钮以选择“数据绑定”属性页。

出现“Labeln 数据绑定”对话框(这里的 n 是标签号)。下图显示 Label1 的对话框。

从左窗格的“可绑定属性”中选择 Text 属性,并从右窗格的 dataView1 节点中选择适当的列。

标签可绑定属性

从“格式”下拉列表中选择正确的格式。例如,对于 price 可以使用“货币”格式,对于 pubdate 可以使用可用的日期格式之一。

单击“确定”按钮。

在每个标签前加上一个包含说明文本(例如,“书名 ID”、“书名”、“出版日期”和“价格”)的 HTML Label 以添加描述这些标签的文本。为此,请打开工具箱,将 Label 从“HTML”选项卡拖到 Web 窗体设计器表面。将标签放在对应的绑定标签的前面,并适当修改其文本。重复此过程以创建四个标签。

现在,Web 窗体设计器表面看起来应该如下图所示。

Web 窗体设计器表面

在此步骤中,添加必要的代码以便在单击 DataGrid 时激活详细信息。

激活详细信息

双击 DataGrid1 对象。

这将向代码隐藏文件添加 DataGrid1_SelectedIndexChanged 事件处理程序并切换到代码视图。

在 DataGrid1_SelectedIndexChanged 方法中,添加下列代码以设置 dataView1.RowFilter,使它只选择希望显示的行:

// C#

myComponent.FillDataSet(myDataSet1);

int index = DataGrid1.SelectedIndex;

string key = DataGrid1.DataKeys[index].ToString();

dataView1.RowFilter = DataGrid1.DataKeyField + "='" + key + "'";

' Visual Basic

MyComponent.FillDataSet(myDataSet1)

Dim index As Integer

Dim key As String

index = DataGrid1.SelectedIndex

key = DataGrid1.DataKeys(index).ToString()

dataView1.RowFilter = DataGrid1.DataKeyField & "='" & key & "'"

从概念上讲,您所做的事情非常类似于指定 SQL 查询的 WHERE 子句,并使用它仅从表中获取单个行。在创建 DataGrid 时指定的 DataKeys 属性是唯一标识每一行的一种方法。通过将项索引映射到匹配键来确定选定行的键值。此键是有效的 title_id,现在可以用于唯一选择要使用的行。因为 title_id 是数据库的主键,所以此方法可行。对于其他的数据库或其他数据键,不一定能够保证这些约束;因此,如果想在没有主键的表上使用此技术,应该修改代码。

在 DataGrid1_SelectedIndexChanged 方法中,通过对每个要使用的标签调用 DataBind() 来绑定该标签。在设置行筛选器更改的后面放置这些调用:

// C#

Label1.DataBind();

Label2.DataBind();

Label3.DataBind();

Label4.DataBind();

' Visual Basic

Label1.DataBind()

Label2.DataBind()

Label3.DataBind()

Label4.DataBind()

生成和启动项目。

单击一个标题以获取详细信息。

使用 Visual C# 或 Visual Basic 创建业务对象

在本节中,您将业务对象创建为 Visual C# 或 Visual Basic 类。该类将包含通过计算特定书籍的优惠价格来实现业务规则的方法或子例程。

使用 Visual C# 创建业务对象

在“类视图”中,右击 MyWebForm。

在快捷菜单上单击“添加”,然后单击“添加类”。

出现“C# 添加类向导”,如下图所示。

C# 添加类向导

在对话框中,将类命名为 MyPaymentRules 并单击“完成”。

在“类视图”中,右击 MyPaymentRules 类。

在快捷菜单上单击“添加”,然后单击“添加方法”。

“C# 添加方法向导”出现。

C# 添加方法向导

在“方法名称”文本框中,输入 CalcDiscount。

从下拉列表中选择下列信息:

“参数类型:”double

“参数名:”price

“返回类型:”double

单击“添加”,然后单击“完成”。

以下方法将被添加到 MyPaymentRules 类中:

// C#

public double CalcDiscount(double price)

{

return 0;

}

如下所示修改 return 语句:

return 0.9 * price;

使用 Visual Basic 创建业务对象

在“解决方案资源管理器”中,右击 MyWebForm。

在快捷菜单上单击“添加”,然后单击“添加类”。

出现“添加新项”对话框,如下图所示。

“添加新项”对话框

在“添加新项”对话框中,将类文件的默认名称从 Class1.vb 更改为 MyPaymentRules.vb,然后单击“打开”。

随即创建 MyPaymentRules.vb 类。

如果类代码尚不可见,在“解决方案资源管理器”中双击 MyPaymentRules.vb 并将如下函数添加到类中:

' Visual Basic

Public Class MyPaymentRules

' Add the following code

Dim price As Double

Public Function CalcDiscount(ByVal price As Double)

Return 0.9 * price

End Function

' End of the new code.

End Class

使用业务对象

在本节中,您将新的绑定标签添加到 Web 窗体页。新标签显示包括 10% 折扣的优惠价格。

实现业务对象

将 WebForms Label 控件从工具箱拖到 Web 窗体设计器表面(它采用 ID Label5)。

此标签将显示优惠价格。

将 Label5 的文本属性绑定到 DataView1 的价格列

不必使用特定的格式,原因是格式将在代码中指定。

将 HTML Label 控件从工具箱拖到 Web 窗体设计器表面并将其放在 Label5 的前面。

将标签文本更改为“优惠价格”。

查看 WebForm1.aspx.cs 文件(或 WebForm1.aspx.vb 文件)并将下列代码添加到 DataGrid1_SelectedIndexChanged 方法/子方法的结尾:

// C#

// Declare an instance of the business object:

MyPaymentRules pr = new MyPaymentRules();

// Invoke the CalcDiscount Method:

try

{

decimal price = myDataSet1.titles[index].price;

Label5.Text = String.Format("{0:C}",

pr.CalcDiscount(Convert.ToDouble(price)));

}

catch

{

// If the price is blank, display a message:

Label1.Text = "Price is not available for this item.";

Label5.Text = "Discount is not available for this item.";

}

' Visual Basic

' Declare an instance of the business object

Dim pr As New MyPaymentRules()

' Invoke the CalcDicount Method:

Try

Dim price As decimal

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有