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

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




 

 

上一篇文章  文章內容的段落?分行?分段?換行?#1 (DetailsView、FormView為例) -- FindControl + DataBound事件

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

 

書本「下集」 --  ASP.NET專題實務(II) / 松崗出版

有一章很特別,專門講「DataBinding與 DataBinding Expression」

以前也有相關範例。

我們將沿用這一章的技巧來作這個範例。您可以在以前的範例看到類似的作法:

DataBinding?資料繫結?資料綁定? #4--繫結運算式原來可以這樣用?(DataSet / DataReader)

[習題]DataBinding?資料繫結?資料綁定? #6 -- 傷腦筋的 GridView加總、小計

 

 

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

Q :  我用 FormView與 DetailsView來呈現一篇文章、一個產品的內容

       如何讓文章段落(換行、換列)能呈現在畫面上?

 

 

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

      

 

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

      

 

當您輸入文字時,按下「Enter」鍵換行、換列、換段落(分段落)

瀏覽器是無法辨識這種「段落符號」的

瀏覽器只認識HTML碼!......  <br />  或是 <p>等等

 

您在文字方塊(TextBox)輸入的段落符號是這種:

    C#的換行、換列     "\r\n"

    VB的換行、換列    vbcrlf

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

HTML畫面設計:

      1.  DetailsView + SqlDataSource,並且把文章內容(article欄位)設定為樣板 / Template

      2.  把原本的 Label 

                    <asp:TemplateField HeaderText="article" SortExpression="article">
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Bind("article") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>

           改成 <asp:Label ID="Label1" runat="server" Text='<%# myArticle() %>'></asp:Label>

 

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

後置程式碼:

      傳統的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", "<br />");
 
            //建議使用 .ExecuteScalar() 會更好
        }
        catch (Exception ex)
        {   
            Response.Write("<b>Error Message----  </b>" + ex.ToString() + "<HR/>");
        }
        finally
        {
            // == 第四,釋放資源、關閉資料庫的連結。
            if (dr != null)
            {
                cmd.Cancel();
                dr.Close()
            }
            if (Conn.State == ConnectionState.Open)
            {
                Conn.Close();
            }
        }
 
        return ArticleString;
    }
 

 

這個範例有哪些缺點呢?

請參閱 jeff的文章 -- http://www.dotblogs.com.tw/jeff-yeh/archive/2009/12/14/12446.aspx

 

2013/11/25補充:您也可以把上面的範例改成

      改成 <asp:Label ID="Label1" runat="server" Text='<%# myArticle(Eval("article")) %>'></asp:Label>

      當然程式裡面的 Function要改成,可以輸入值

 

 

這篇文章的作法也很棒,也是透過 "資料繫結運算式" 來作。

[GridView] 資料繫結運算式?或是RowDataBound事件來作?

 

 

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

MIS2000Lab_Article_BR.rar

 

 

 

 

 
.......................以下是廣告........................................................................................
 
 
我的書、我的課程,絕對沒有太多招數
 
都是用最基本的技巧
組合成各種變化。
 
如同詠春拳,三個套路,
排列組合、變化萬千
 
 
 
 
 
 
與其到處  Copy範例、到處抄襲程式碼(找到了也改不動)
 
為什麼不一次學好、學清楚?
 
然後讓自己有生產力呢?
(你學了一百招,但上了戰場,一招都使不出來?)
(客戶的要求,沒有一個你能自己做到?還是上網逐一發問、抄抄改改?)
 
 
為什麼人家可以千變萬化?
 
我只能到處拼拼湊湊?卻還天天加班、做不完?最後還是迷迷糊糊?
 
 
 
 
   如何一以貫之
         如何啟動「輕輕鬆鬆的自我學習之道」?
 
 
讓我告訴你,
一個沒有大型補習班招牌、沒有關鍵字廣告的書籍與課程
 
 
在時局這麼亂、經濟與工作越來越蕭條的  Bumbler 無能年代
 
為何所有補習班的 ASP.NET課程都開不成、招不到學生
 
我的課程,班班額滿,欲罷不能.............縱貫這三四年 全台灣 的 ASP.NET入門教學
 
 
 
 

 
 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程,遠距教學 (Web Form 49hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程,遠距教學 (ASP.NET MVC 75hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

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

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

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

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

累積時數約 75小時...... 第一天(5.5小時)完整內容,"免費"讓您評估