ASP.NET动态增加控件 应用篇(二)
此篇,是 前篇 应用篇(一)的延续,也是进阶版。在本篇中使用一个aspx 档案来同时实现,资料清单的显示以及资料编辑同在一起的示范。
当然,资料字段少的时候,可以直接 使用GridView 就直接实现,但在字段多的时候,或是编辑画面要求复杂时,这时在使用GridView 就感觉很麻烦了。
在本篇中 会使用 几个程式相关档案,分别是,
test5.aspx 主页面
MyBase5.aspx.cs 基底程式
Customer 类,Value Object
test5.xml 用来储存示范资料
详细介绍如下:
在MyBase5 中有各重点就是,一开始控件,要在Init 时就要全部产生出来,当然这是各偷懒的行为,读者 有兴趣,可以 再去尝试判断页面状态,来决定来些要产生 哪些不产生。
在这个程式中还有各要注意的地方,就是sourceTag(编辑页面) 跟GridView1(主页面) 的显示控制,一开始 需先将sourceTag 隐藏,因为本页面,user 无任何操作一进来要看到的页面是GridView1,sourceTag 是进来页面後 视操作的结果来决定是否显示的。
MyBase5.aspx.cs
1 using System;
2 using System.Data;
3 using System.Collections;
4 using System.Web.UI;
5 using System.Web.UI.WebControls;
6 using System.Web.UI.HtmlControls;
7 using System.Text;
8 using System.Configuration;
9
10 public class MyBase5 : System.Web.UI.Page{
11
12 protected GridView GridView1;
13 protected HtmlGenericControl sourceTag;
14 protected Button btnSubmit;
15 www.zzzyk.com
16 protected override void OnInit(EventArgs e)
17 {
18 base.OnInit(e);
19 HtmlGenericControl msgTag = new HtmlGenericControl();
20 msgTag.ID = "divMsg";
21 sourceTag.Controls.Add(msgTag);
22
23 Button btnSave = new Button();
24 btnSave.Click += new EventHandler(btnSave_Click);
25 btnSave.Text = "储存";
26 sourceTag.Controls.Add(btnSave);
27
28 Button btnMain = new Button();
29 btnMain.Click += new EventHandler(btnMain_Click);
30 btnMain.Text = "回主页面";
31 sourceTag.Controls.Add(btnMain);
32
33 Table myTable = new Table();
34 sourceTag.Controls.Add(myTable);
35 dealTableData(myTable);
36 sourceTag.Visible = false;
37
38 GridView1.RowEditing += new GridViewEditEventHandler(GridView1_RowEditing);
39 }
40 protected override void OnLoad(EventArgs e)
41 {
42 base.OnLoad(e);
43
44 if (!IsPostBack)
45 {
46 DataBind();
47 }
48 }
49
50 public virtual void DataBind()
51 {
52
53 }
54 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
55 {
56 try
57 {
58 Object myObj = GetGridData(e.NewEditIndex);
59 if (myObj != null)
60 {
61 ShowEditData(myObj);
62 Customer myCus = (Customer)myObj;
63 sourceTag.Visible = true;
64 GridView1.Visible = false;
65 }
66 }
67 catch (Exception ex)
68 {
69 ShowMessage(ex.ToString());
70 }
71 }
72 //取得GridView 特定列的资料
73 public virtual Object GetGridData(int EditIndex)
74 {
75 return null;
76 }
77 //生成编辑画面的控件
78 public virtual void dealTableData(Table myTable)
79 {
80
81 }
82 //设定编辑画面控件的预设值
83 public virtual void ShowEditData(Object fVObj)
84 {
85
86 }
87 //储存 按键触发后的处里
88 public virtual void btnSave_Click(Object sender, EventArgs e)
89 {
90 }
91 //回主页面 按键触发后的处里
92 public virtual void btnMain_Click(Object sender, EventArgs e)
93 {
94 sourceTag.Visible = false;
95 GridView1.Visible = true;
96 GridView1.EditIndex = -1;
97 DataBind();
98 }
99 public virtual void ShowMessage(string msg)
补充:Web开发 , ASP.Net ,