【自用建設中小型網站工具】快速生成后台


前言:此”快速生成后台“為本人參考discuz開源代碼效果組裝而成。無高深技術,只講究快速生成,適合建設中小型網站。運用得當可以批量生產網站后台。

 

以一個新聞系統為例子,寫出詳細建設過程,分享一下,以備后用。涉及工具有:VS2010、PowerDesigner、SQL Server 2008、DBBuildCodeultraedit。

 

一、設計頁面

 

1、打開VS2010,新建一個空網站,保存至News文件夾。

 

 

 

2、添加新項:NewsList.aspx、NewsEdit.aspx2個Web窗體,新建文件夾:Style(main.css、general.css),新建文件夾:Images(界面所需圖片)。

 

 

 

3、設計NewsList.aspx(新聞列表)、NewsEdit.aspx(新聞編輯)頁面。

 

 

 

 

 

二、設計數據庫

 

1、打開PowerDesigner ,建表News。

 

 

 

2、打開SQL Server 2008,新建數據庫News,新建表:News(從PowerDesigner中取建表語句)。

 

 

 

三、自動生成數據庫代碼

 

1、新建App_Code,加個三個文件夾(DataBase、DBEntity、DBInterface),加入已有的三個文件(CDbBaseSqlServer.cs、CDbHelper、IDbBase.cs)至DataBase。

 

 

 

 

2、打開自動生成工具(本人自己用C++寫的)。

 

 

 

3、從PowerDesigner中取出News表的字段信息。

 

 

 

4、填入DBBuildCode工具,點擊“生成”按鈕,在工具目錄生成2個文件(CNewsInfo.cs、CNews.cs)。注:表結構中內容可以借助於ultraedit來處理。

 

 

 

5、把生成的2個文件(CNewsInfo.cs、CNews.cs)分別新添加至DBEntity、DBInterface文件夾,發現數據庫操作的代碼都已經生成。

 

 

 

6、設置Web.config中數據庫連接串等信息。

 

<?xml version="1.0"?>
<!--
  有關如何配置 ASP.NET 應用程序的詳細信息,請訪問
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0"/>
    </system.web>
    <appSettings>
        <add key="DatabasePre" value=""/>
        <add key="mssql" value="1"/>
    </appSettings>
    <connectionStrings>
        <add name="Conn" connectionString="server=local;database=news;User Id=sa;pwd=sa;"/>
    </connectionStrings>
</configuration>

 

四、實現前台C#操作代碼。

 

在NewsList.aspx.cs、NewsEdit.aspx.cs實現對應的控件響應操作代碼。

關鍵代碼如下:

 

 private void InitDataGrid()
    {
        DataTable dt = new DataTable();
        if (this.txtSearch.Text != "")
        {
            dt = oNews.GetInfoForSearch(this.txtSearch.Text.Trim());
        }
        else
            dt = oNews.GetInfo();

        for (int i = 0; i < dt.Rows.Count; i++)
        {
            string sFlagRecomTemp = "";
            //推薦標記
            string sFlagRecom = dt.Rows[i]["FlagRecom"].ToString();
            {
                if (sFlagRecom == "0")
                {
                    sFlagRecomTemp = "";
                }
                if (sFlagRecom == "1")
                {
                    sFlagRecomTemp = "";
                }
            }
            dt.Rows[i]["FlagRecom"] = sFlagRecomTemp;
        }
        int cup = Convert.ToInt32(this.lbCurrentPage.Text);
        PagedDataSource ps = new PagedDataSource();
        ps.DataSource = dt.DefaultView;
        ps.AllowPaging = true;
        ps.PageSize = 24;
        ps.CurrentPageIndex = cup - 1;
        this.lbPage.Text = ps.PageCount.ToString();

        this.ddlPage.Items.Clear();
        for (int i = 1; i < ps.PageCount + 1; i++)
        {
            ListItem li = new ListItem(i.ToString(), i.ToString());
            this.ddlPage.Items.Add(i.ToString());
        }
        this.LinkUp.Enabled = true;
        this.LinkDown.Enabled = true;
        this.ddlPage.SelectedValue = cup.ToString();
        if (Convert.ToInt16(this.lbCurrentPage.Text) < 2)
        {
            this.LinkFirst.Enabled = false;
            this.LinkUp.Enabled = false;
        }
        else
        {
            this.LinkFirst.Enabled = true;
            this.LinkUp.Enabled = true;
        }
        if (Convert.ToInt16(this.lbCurrentPage.Text) >= Convert.ToInt16(this.lbPage.Text))
        {
            this.LinkDown.Enabled = false;
            this.LinkLast.Enabled = false;
        }
        else
        {
            this.LinkDown.Enabled = true;
            this.LinkLast.Enabled = true;
        }

        this.dgList.DataSource = ps;
        this.dgList.DataBind();

        if (dt.Rows.Count < 1)
        {
            this.currentPage.Style.Add("display", "none");
            this.currentPageError.Style.Add("display", "");
        }
        else
        {
            this.currentPage.Style.Add("display", "");
            this.currentPageError.Style.Add("display", "none");
        }
    }
 private void InitNewsEdit()
    {
        int iId = 0;
        string sEdit = "";
        if (Request.Params["edit"] != null)
        {
            sEdit = Request.Params["edit"].ToString().ToLower();
            ViewState["flagedit"] = sEdit;
        }
        if (Request.Params["id"] != null)
        {
            iId = Convert.ToInt32(Request.Params["id"].ToString());
            ViewState["id"] = iId;
        }
        switch (sEdit)
        {
            case "add":
                {
                    this.lbTitle.Text = "添加新聞";
                    sFlagMsg = "fail";
                }
                break;
            case "edit":
                {
                    this.lbTitle.Text = "修改新聞";
                    sFlagMsg = "ok";

                    CNewsInfo oNewsInfo = new CNewsInfo();
                    oNewsInfo = oNews.GetInfo(iId);

                    int iSid = 0;
                    iSid = oNewsInfo.Nid;

                    this.txtTitle.Text = oNewsInfo.Title;
                    this.txtCreator.Text = oNewsInfo.Creator;
                    this.ddlFlagRecom.SelectedValue = oNewsInfo.FlagRecom;
                    this.txtContent.Text = oNewsInfo.Content;
                }
                break;
            default:
                break;
        }
    }

    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        int iId = 0;
        iId = CTypeConverter.StrToInt(ViewState["id"].ToString());

        string sTitle = "";
        string sCreator = "";
        string sContent = "";
        int iHits = 0;
        string sFlagRecom = "";

        sTitle = this.txtTitle.Text.Trim();
        sCreator = this.txtCreator.Text.Trim();
        sContent = this.txtContent.Text.Trim();
        sFlagRecom = this.ddlFlagRecom.SelectedValue;

        string sFlagEdit = ViewState["flagedit"].ToString();
        switch (sFlagEdit)
        {
            case "add":
                {
                    CNewsInfo oNewsInfo = new CNewsInfo();
                    oNewsInfo.Title = sTitle;
                    oNewsInfo.Creator = sCreator;
                    oNewsInfo.Content = sContent;
                    oNewsInfo.Hits = iHits;
                    oNewsInfo.FlagRecom = sFlagRecom;

                    oNews.Insert(oNewsInfo);
                    Response.Redirect("SystemInfo.aspx?msgname=" + Server.UrlEncode("新聞添加成功!") + "&backpage=NewsEdit.aspx?edit=add&backname=" + Server.UrlEncode("繼續添加新聞"));
                }
                break;
            case "edit":
                {
                    CNewsInfo oNewsInfo = new CNewsInfo();
                    oNewsInfo = oNews.GetInfo(iId);

                    oNewsInfo.Title = sTitle;
                    oNewsInfo.Creator = sCreator;
                    oNewsInfo.Content = sContent;
                    oNewsInfo.FlagRecom = sFlagRecom;

                    oNews.Update(iId, oNewsInfo);
                    Response.Redirect("SystemInfo.aspx?msgname=" + Server.UrlEncode("新聞修改成功!") + "&backpage=NewsList.aspx&backname=" + Server.UrlEncode("返回新聞列表"));
                }
                break;
            default:
                break;
        }
    }

 

五、運行NewsList.aspx效果圖。

  有顯示、查詢、添加、修改、刪除、分頁功能。

 PS:原型是這樣,可以根據各種網站的風格去定制效果。源碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM