天天看點

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

終于趕出來了,現寫了一遍代碼。

感謝大家的支援,感謝大家提出自己的看法。衷心的感謝,真的。

應該是先寫第二步的,但是想一想還是先寫第三步吧。

一般大項目裡面都會有很多的基礎資訊的表,比如學曆、職稱等等,最近做了一個項目,居然有四十多個。如果一個一個地寫是不是太麻煩了呢?

下面就要介紹一種方法 —— 基本一個頁面搞定。

還是先說一下前提吧

VS2003 、 SQL2000 、 webform ,辦公系統裡的基礎資訊表的維護。

1、SQL2000裡的幾個系統表

寫過代碼生成器的Tx對這幾個表都很熟悉吧,sysobjects 、syscolumns 、systypes 。

請打開企業管理器(查詢分析器也可以),建立一個視圖,粘貼下面的SQL語句,然後儲存視圖,名字就叫做 V_Sys_TableInfo 吧,後面要用到的哦。

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

SELECT tbl.name AS TableName, tbl.xtype AS TableType, col.name AS FieldName, 

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

      tt.name AS FieldType, col.length AS FieldLength

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

FROM dbo.syscolumns col INNER JOIN

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

      dbo.sysobjects tbl ON col.id = tbl.id INNER JOIN

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

      dbo.systypes tt ON col.xtype = tt.xtype

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

WHERE (tbl.xtype = 'u') AND (tt.name <> N'sysname')

看不懂SQL語句沒關系,運作一下看看結果就知道了。你發現了什麼?你的資料庫裡的表名、字段名、字段類型和字段大小。

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

那麼這些資訊有什麼用呢?請先回顧一下第一步裡儲存資料都需要哪些元素。表名、字段名、使用者輸入的資訊。

知道我要怎麼用了吧,對,就是要通過表名來擷取表所擁有的字段名。

2、DataGrid是不是也可以這麼用。

開始繪制表單了。一個一個文本框的拖拽是不是挺煩的,那麼一起把需要的控件逗弄出來怎麼樣?

想想上面得到的記錄集,是不是可以利用一下呢?

建立一個UserControl ,拖一個DataGrid 出來,設定三列,第一列綁定 FieldName ,第二列空,第三列設定成模版列,放一個文本框。代碼如下

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

<asp:DataGrid id="DG" align="center" runat="server" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px"

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

    BackColor="White" CellPadding="4" ForeColor="Black" AutoGenerateColumns="False">

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

    <FooterStyle ForeColor="Black" BackColor="#CCCC99"></FooterStyle>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

    <SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#CC3333"></SelectedItemStyle>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

    <HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#333333"></HeaderStyle>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

    <Columns>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        <asp:BoundColumn Visible="False" DataField="FieldName" HeaderText="FieldName"></asp:BoundColumn>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        <asp:BoundColumn DataField="FieldName" HeaderText="字段名"></asp:BoundColumn>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        <asp:TemplateColumn HeaderText="控件">

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            <ItemTemplate>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                <FONT face="宋體">

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                    <hbs:HBSTextBox id="Txt" runat="server" Columns="30"></hbs:HBSTextBox></FONT>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            </ItemTemplate>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        </asp:TemplateColumn>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

    </Columns>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

    <PagerStyle HorizontalAlign="Right" ForeColor="Black" BackColor="White"></PagerStyle>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

</asp:DataGrid>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

<P>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

    <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" align="center" border="0">

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        <TR>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            <TD align="center"> 

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                <asp:Button id="Btn_Save" runat="server" Width="70px" Text=" 确 定 "></asp:Button> <INPUT id="Btn_Return" onclick="myEsc()" type="button" value=" 返 回 " name="Btn_Return"></TD>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            </TD></TR>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

    </TABLE>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

</P>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

進入背景,綁定DataGrid。想象一下會出現什麼樣的效果。

運作效果。

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

先不詳細說明了,發代碼先。

UserControl 頁面 BaseForm.ascx

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

<%

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

@ Register TagPrefix="HBS" Namespace="HBS.Controls" Assembly="HBSControls" %>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        <asp:BoundColumn HeaderText="字段名"></asp:BoundColumn>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

public class BaseForm : System.Web.UI.UserControl

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

{

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        Web 窗體設計器生成的代碼#region Web 窗體設計器生成的代碼

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        override protected void OnInit(EventArgs e)

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            //

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            // CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            InitializeComponent();

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            base.OnInit(e);

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        }

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        /**//// <summary>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        ///        設計器支援所需的方法 - 不要使用代碼編輯器

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        ///        修改此方法的内容。

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        /// </summary>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        private void InitializeComponent()

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            this.Btn_Save.Click += new System.EventHandler(this.Btn_Save_Click);

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            this.Load += new System.EventHandler(this.Page_Load);

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        #endregion

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        protected System.Web.UI.WebControls.Button Btn_Save;

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        protected System.Web.UI.WebControls.DataGrid DG;

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        DataAccessLayer dal = new DataAccessLayer();

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        屬性#region 屬性

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        protected string Kind = "1";

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        protected string DataID = "";

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        private string _TableName = "";

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        /// 設定表名,用于添加和修改資料

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        public string TableName

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            get

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

{return _TableName;}

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            set

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

{_TableName = value;}

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        private string _FieldID = "";

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        /// 設定主鍵名,用于修改資料

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        public string FieldID

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

{return _FieldID;}

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

{_FieldID = value;}

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        private void Page_Load(object sender, System.EventArgs e)

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            // 在此處放置使用者代碼以初始化頁面

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        綁定#region 綁定

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        public void BindDataGrid()

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            this.DG.DataSource = dal.RunSqlDataTable("select * from V_Sys_TableInfo where TableName='" + _TableName + "'");

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            this.DG.DataBind();

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            //隐藏第一行

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            DG.Items[0].Visible = false;

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        儲存#region 儲存

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        private void Btn_Save_Click(object sender, System.EventArgs e)

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            //儲存資料

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            string[] str1 = new string[DG.Items.Count - 1];

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            string[] str = new string[DG.Items.Count - 1];

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            int i = -1;

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            foreach (DataGridItem item in DG.Items)

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                if (i != -1)        //掠過第一行

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                    //字段名

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                    str1[i] = item.Cells[0].Text ;        

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                    //取值

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                    str[i] = ((HBSTextBox)item.Cells[2].FindControl("Txt")).TextTrimNone;

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                }

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                i++;

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            }

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            儲存資料#region 儲存資料

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            switch (Kind )

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                case "1":

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                    //添加時驗證是否有相同的記錄,代碼略。寫多了會影響這裡的主題

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                    //添加資料

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                    dal.InsertDataStr(_TableName,str1,str);

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                    break;

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                case "2":

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                    //修改時驗證是否有相同的記錄,代碼略。寫多了會影響這裡的主題    

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                    //修改資料

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                    dal.UpdateData(_TableName,str1,str, _FieldID + " = " + DataID);

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            #endregion

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            檢查是否出現異常#region 檢查是否出現異常

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            if (dal.ErrorMsg.Length > 2)

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                Functions.PageRegisterAlert(Page,"儲存資料的時候出現意外情況,請與管理者聯系!");

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                return ;

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            Functions.PageRegisterAlert(Page,"儲存成功!");

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

    }

表單頁面 MoreTable.aspx

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

<body MS_POSITIONING="FlowLayout">

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        <form id="Form1" method="post" runat="server">

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            <uc1:BaseForm id="myForm" runat="server" TableName="News"></uc1:BaseForm>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        </form>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

    </body>

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

//請注意這裡,在VS2003裡面,這行是不會自動出現的,需要手動填寫。

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

        protected JYK.Test.UC.BaseForm myForm;        //使用者控件

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            Response.Cache.SetNoStore();

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

            if (!Page.IsPostBack)

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                myForm.BindDataGrid();

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                //把英文的字段名改成中文的

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                myForm.DG.Items[1].Cells[1].Text = "分類";

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                myForm.DG.Items[2].Cells[1].Text = "内容";

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                myForm.DG.Items[3].Cells[1].Text = "标題";

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

                myForm.DG.Items[4].Cells[1].Text = "編輯";

其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)
其實添加資料也可以這樣簡單——表單的第三步抽象(針對UI及後置代碼)

使用者控件隻使用一個就可以了。(不知道這算不算抽象)

表單控件是一個頁面對應一個資料表,其實也就是設定一下表名,和顯示一下字段的中文名。

優點呢:代碼少,其他的就不說了。

缺點就很多了:隻能用文本框、要單獨設定中文名、頁面死闆不靈活、不夠OO,隻能單表操作。

不過除了不夠OO(準确點說是一點都不OO:)),其他的是都可以改進的。至于怎麼改進,如果您感興趣可以想一想,方法實在是太多了。

ps:我現在寫程式并不是用的這種方法,隻是思路是一樣的。這種方法,是我剛寫的,在實際中沒有應用過的。

繼續閱讀