当前位置导航:炫浪网>>网络学院>>编程开发>>Visual C#教程

Visual C#或Visual Basic创建Web应用程序(下)

  
  测试项目
  
  在“生成”菜单上,单击“生成解决方案”。
  
  在“调试”菜单上单击“开始执行(不调试)”。
  
  现在可以在 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
相关内容
赞助商链接