2013年8月2日 星期五

文章內容的段落?分行?分段?換行?#2 (DetailsView、FormView為例) DataBinding Expression

此為文章備份,原文請看我的網站: http://www.dotblogs.com.tw/mis2000lab/archive/2013/07/09/detailsview_formview_article_br_databinding_expression.aspx

文章內容的段落?分行?分段?換行?#2 (DetailsView、FormView為例) DataBinding Expression


================================================

相同的成果,我們用另一種方法來撰寫

書本「下集」有一章很特別,專門講「DataBinding與 DataBinding Expression」
以前也有相關範例。
我們將沿用這一章的技巧來作這個範例。您可以在以前的範例看到類似的作法:


.....................................................................................................................................................
Q :  我用 FormView與 DetailsView來呈現一篇文章、一個產品的內容
       如何讓文章段落(換行、換列)能呈現在畫面上?


原本的畫面呈現,文章擠在一起,沒有分段落
      

修改後,變成這樣的畫面(文章每一段都有分段、換行、分段落)
      

當您輸入文字時,按下「Enter」鍵換行、換列、換段落(分段落)
瀏覽器是無法辨識這種「段落符號」的
瀏覽器只認識HTML碼!......
 或是 等等

您在文字方塊(TextBox)輸入的段落符號是這種:
    C#的換行、換列     "\r\n"
    VB的換行、換列    vbcrlf
.....................................................................................................................................................
HTML畫面設計:
      1.  DetailsView + SqlDataSource,並且把文章內容(article欄位)設定為樣板 / Template
      2.  把原本的 Label 
                   
                       
                            Text='<%# Bind("article") %>'
>
                       
                   
           改成 Text='<%# myArticle() %>'
>

.....................................................................................................................................................


ASP.NET課程 / ASP.NET教學,請看
    http://www.dotblogs.com.tw/mis2000lab/archive/2011/06/24/29807.aspx

    [台北] ASP.NET入門實戰 + ADO.NET進階【二合一】49 hr


ASP.NET影片、遠距教學,請看:
    http://www.dotblogs.com.tw/mis2000lab/archive/2015/03/09/aspnet-online-learning-distance-education-2015.aspx

    [遠距教學、教學影片] ASP.NET (Web Form) 六週課程 上線了!




後置程式碼:
      傳統的ADO.NET程式寫上去即可
    public String myArticle()
    {
        //=======微軟SDK文件的範本=======
        SqlConnection Conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["Web.Config設定檔裡面的DB連結字串"].ConnectionString);
        SqlDataReader dr = null;
        SqlCommand cmd = new SqlCommand("select article from test where id = " + DetailsView1.DataKey.Value , Conn);
        String ArticleString = "";
        try     //==== 以下程式,只放「執行期間」的指令!=====================
        {
            //== 第一,連結資料庫。
            Conn.Open();   //---- 這時候才連結DB
            //== 第二,執行SQL指令。
            dr = cmd.ExecuteReader();   //---- 這時候執行SQL指令,取出資料
            //==第三,自由發揮,把執行後的結果呈現到畫面上。
            dr.Read();
            ArticleString = dr["article"].ToString().Replace("\r\n", "
")
;
            //建議使用 .ExecuteScalar() 會更好
        }
        catch (Exception ex)
        {   
            Response.Write("Error Message----  " + ex.ToString() + "

");
        }
        finally
        {
            // == 第四,釋放資源、關閉資料庫的連結。
            if (dr != null)
            {
                cmd.Cancel();
                dr.Close()
            }
            if (Conn.State == ConnectionState.Open)
            {
                Conn.Close();
            }
        }
        return ArticleString;
    }

這個範例有哪些缺點呢?


剩下兩個作法,包含這篇(前一篇文章)的範例,請由此下載:






............................. 寫信給我,mis2000lab (at) yahoo.com.台灣.........................................................
網頁上的補充範例(售後服務)不一定能立即提供 VB / C#語法(看時間夠不夠寫,請不要跟我們要)
書本上面的範例,一定有 VB / C#雙語法給您學習。          請看我們的「售後服務」範圍(嚴格認定)

防範SQL Injection / XSS攻擊,請看:ASP.NET安全寫作    資料來源 -- TWISC@NTUST網路應用安全知識庫

沒有留言: