2013年9月5日 星期四

多重欄位搜尋 -- SqlDataSource的 CancelSelectOnNullParameter屬性

本文是備份,原文請看我的網站 -- http://www.dotblogs.com.tw/mis2000lab/archive/2013/07/25/sqldatasource_cancelselectonnullparameter.aspx




抱歉!上課都有提到這個範例
光碟也有提供。

但書本卻忘了提,所以在此補充:

簡單的說,SqlDataSource的 CancelSelectOnNullParameter屬性(搜尋欄位,那怕只有一個Null就不動作)

這個屬性就算關閉了沒也效!
還是要自己動手改一下SQL指令才行。



        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:Web.Config檔裡面的連結字串 %>" 
                        
            SelectCommand="SELECT [id], [test_time], [title], [summary], [author] FROM [test] 
                                      WHERE ([summary] LIKE '%' + IsNull(@summary, '') + '%')" 
            CancelSelectOnNullParameter="False" >
            <SelectParameters>
                <asp:ControlParameter ControlID="TextBox1" Name="summary" PropertyName="Text" 
                    Type="String" />
            </SelectParameters>
        </asp:SqlDataSource>

可以參考微軟 msdn的說明 --
    http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.sqldatasource.cancelselectonnullparameter.aspx


我手邊的範例,多到我沒法管理
有時,上課有講,但發現書裡面沒有?
有時,書裡面已經講過了,但因為範例過多,我常常找不到

看起來,我的上下兩集,真的要拆成四本,
不然的話,內容多到我也不好管理了




 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) 六週課程 上線了!


補習班專用書 -- ASP.NET核心教材 (2013年底的出書計畫)

 
這篇文章是備份,原文請看我的網站:http://www.dotblogs.com.tw/mis2000lab/archive/2013/07/23/book2_net_45_vs2012.aspx 
  
因為「下集 for .NET 4.0」已經銷售一空
詳見:PChome 24hr 
上面這本書(下集 第二版 for  .NET 4.0,黑皮書)   確定完售!絕版!
所以......一個半月後,全新的「下集 for .NET 4.5 / VS 2012」也會送廠印刷。
(仍是黑色書皮,延續上一本的「黑皮書」色系)
範例  再度  暴增!
出版社與編輯  再度  哀嚎:「賠錢啦!書本通常是600頁就夠了.....上限不能超過800頁!紙張很貴的~」
目前,排版後的頁數將近 1350頁
也就是別的作者可以分成兩本書來賣、賺兩次稿費
如果把我的上 / 下兩集合併起來,按照出版社的成本來說,可以拆成「四本書」來出版
因為三千頁不成問題.........
最後 .NET 4.5的章節(共計六章)只能通通轉成PDF檔,佛心來著   隨書送出去
加上原本的附錄(原先就打算做成PDF檔,四章)
一共有十章不印刷。
這十章我拿去別家賣,應該又是一本書了。
因為我的一章,頁數都很多。60~80頁是常態。
出版社的定價,都是依照書本厚度來算
似乎 這次我白做工了,看起來又是(每次都這樣)「定價多 30元,內容多三~五百頁!」
下集(for .NET 4.5)到底多了哪些範例?讓頁數暴增??

ASP.NET 4.5新書(下集),預計2013年九月底上市
******************************************************************
我一直不能接受 PDF電子書、螢幕閱讀.......這種作法
******************************************************************
因為我自己的讀書習慣,是會在程式碼旁邊做筆記的
把程式碼列印出來,雖然成本高!
但實際練習時、上課時,學生可以為自己做筆記、註解,這是很重要的!
      (用自己的話,做註解!......比老師、作者的說明,更容易讓自己懂)
放在PDF電子書上面,就沒法子了。
而且照著書本的範例練習、打字,
這樣的好處,也不是「同時開兩個畫面」,一邊看PDF、一邊寫程式能比得上
或許我太老派程式設計的書,還是喜歡讀紙本
******************************************************************
上課為何不發兩本書(上下兩集)?
******************************************************************
ASP.NET入門班(使用上集教學)上課的時候,
有些範例我會請學生看看 "下集"第幾章
但學生會覺得:為什麼你不乾脆送我兩本書、上下兩集都給我?
Sorry.....當然是成本考量。
我去上課,沒有一個單位願意為一門(短期 / 40小時)課程購買兩本書的。
就連政府開的課也一樣
而且補習班的承辦人員告訴我:
    「根據他們的經驗,你買兩本書沒有100%全部講完。學生事後會抱怨,反而增加不滿!
======================================================
為了做一個折衷。
也為了上課方便,我打算出一本自己用的教材(教科書)
    統合上下兩集,我上課用到的範例
    簡單的說,上課講到的範例,一律印刷出來。
    程式碼,在書本上,只會印出重點
    因為上課時,會把程式拿出來看、拿出來執行。這樣可以減少紙本厚度。
    觀念解說的文字,盡量減少(或是建議您另外購買上下兩集,課後補充,絕對齊全!)
    因為我上課時,口頭會講、會寫黑板、畫圖為你說明......不印刷出來,也可以
如此一來,開課的書籍成本縮回「一本書」。
但內容全有了。
我上課方便,學生也輕鬆。
上課的書,是濃縮本!(出版社說這是學校市場,賣給學校、補習班。)
市面上販售的書(上下兩集),則是最完整的說明。(出版社說這是店頭書,給書店販售的)
===== 章節內容  ============================================
===基  礎====
第1章 ASP.NET介紹
第2章 C#與VB基本語法,Visual Studio專案與網站之異同
第3章 PostBack,ASP.NET網頁特性
第4章 Web伺服器控制項
第5章 單/複選的清單控制項
===大型控制項的操作====
第6章 DetailsView / FormView與新增、修改、刪除
第7章 GridView自訂樣版
第8章 不用寫程式,網站的Master-Detail功能(主表明細)
===ADO.NET  與  大型控制項「揭密」====
第9章 GridView的進階功能,CommandName搜奇
第10章 ListView的Master-Detail功能(主表明細)
第11章 FindControl方法與Controls集合
第12章 動手寫程式,ADO.NET四大範本
第13章 ADO.NET自訂首頁與Repeater
第14章 jQuery特效
第15章 ADO.NET多重欄位的搜尋引擎
===綜合範例====
第16章 GridView的RowDataBound事件
第17章 Calender + DB,個人行事曆
第18章 使用者控制項(User Control),大腸包小腸(巢狀GridView)
===相關應用 & 變化====
第19章 跨網頁張貼(Cross-Page Post)
第20章 GridView與產生Excel,介紹NPOI
===會員登入、Login====
第21章 狀態管理(Session)與會員登入,SQL Injection攻擊
第22章 檔案上傳(FileUpload)
第23章 ListView 個人相簿
===其他    Web相關技術====
第24章 AJAX,非同步的網頁更新
第25章 資料庫交易(Transaction)與網頁輸出快取(OutputCache)
第26章 SOA服務導向應用程式,Web Service與WCF服務
因為是上課用書,所以考慮自己獨賣
除了天瓏書局(獨家販售)之外,唯有我自己的課程才會有這本書。
希望藉此增加課程的獨特性
(其實我是在出版社裡面,看見其他老師也有這種專有教材,外面買不到。所以決定也來這招)
這本書 "必須" 搭配我的課程,才能發揮最大功效。
並不適合買回家自修......除非你當成是「入門的 ASP.NET第一本書」,那勉強可行。
出版社一看............只有冷冷地說了一句話:
     「你確定這樣的內容沒有超過800頁嗎?
                       你每次寫書都停不下來......八拉八拉(....編輯開始抱怨)....」
     
(臉上三條黑線):.....嗯.....這個.......我先整理出來,我們再討論吧
2013/8/12補充:初步的成果,剛好 700頁出頭。
「希望」.......能在2013年底實踐這個計畫。
上過課的舊學員,我會以成本價分享給大家(出版後會寫信跟各位報告)

[FAQ]MIS2000 你是不是詐騙集團?為何不公開上課地點? (繳費完成才通知您)

 

這個問題一直有人問起,我就簡單的公開回應:

 

第一,是不是詐騙集團?

關於這個疑問,請看下面的超連結

      不解釋,直接看這裡 -- 我的捐款記錄http://www.dotblogs.com.tw/mis2000lab/category/3505.aspx

根據我太太幫我報稅的說法,我 2012年好像捐款15~17萬元(如果記錯,請見諒。)

 

如果我是詐騙集團,要騙您這幾千元的學費,我也算是「義賊」吧......哈哈哈

 

如果我是詐騙集團的話,知名的Blogger 與 微軟MVP --  Allen Kuo  /  Will保哥  / KK Bruce

不會跟我合作一起開課,並委託我收費?            (抱歉喔!把各位朋友拖下水了~~)

 

台中市電腦公會、工業局補助的課程、勞委會職訓局的課程(三年五萬 學習不斷)......這些政府單位、非營利單位都有找我上課(至今三年多了)

我一直都用 MIS2000 Lab.為名來開課。

 

另外,我的年薪滿高的,我不會為了幾千元的收入,跟一兩桶金的年薪作對......

 

我的資料,台灣微軟都有(參加微軟MVP獎項,2008年至今,我已經連續好幾年獲獎了)。

甚至出版社都有(我出書已經十多年了,都跟同一家出版社合作,松崗 / 文魁)

出了事,我逃不掉!

 

對我們這些在網路上稍有知名度的人(老屁股)來說,

    網路上的虛擬名稱(暱稱)比我的真名還有價值!

    這個名稱(MIS2000 Lab.),重視程度比我的真名還高!

    (我可不是那種天天上網跟人吵架,然後吵輸了....換匿名再出面的小屁孩)

    (MIS2000 Lab. 這個名稱,代表了這十幾年的努力耕耘、

      代表我的書、我自己、我的合作夥伴、我的榮譽.....等等,千金難買!千金不換!

 

 

第二,為何不公開上課地點?

以下是我給每一位學員的說明,也是補習班老闆的建議

所以.....繳費成功後,才通知上課地點。這個原則不會變了!

 

原因如下:

現場有電腦教室,也歡迎您自備NB上課。
是大學同學的家人開設補習班(合法立案),特別減價讓我開班,才能降低學費回饋大家。
 
另外要跟大家報告,
   有 "某"連鎖補習班,為了抵制對手跟他們競爭,
   會出面阻撓(找警察或是教育局來臨檢。如:緝查環境、消防檢查等等,藉由名目找碴),讓別人開不成班。
   所以,千萬不要在公開場合,告訴別人我們開課的地點。
 
開課前,會再提醒大家。

 

補習班真有這麼黑暗嗎?請看  新聞一  、  新聞二

 

 

凡事多查證,這是好習慣。我尊重大家的決定。

   多比較!

      因為「真金不怕火練」!

 

MIS2000 Lab.的  ASP.NET班,不敢說名動一時,但也有口碑了。

還是建議各位上課前,先買書來看,看看我的書有何不同?好在哪裡?

然後做了評估,再來報名上課

 

跟其他補習班的課程,老師是誰?......不確定,開課才臨時安排一個上去講?

這個老師的資格如何?有什麼憑據證明他的實力?.....完全不清楚(事先不敢講)。出過書?教了多久?有在業界磨練過?.....完全不清楚

我想:所謂的「上課保證」就在這裡。

 

 

相關文章:

 
 

 

 

Calendar(日曆控制項) e.Day.Date日期格式為 yyyy/M/d,不自動補零

 

 

 
本文介紹的內容,將會涉及Calendar的 DayRender事件  
詳見:
 
 
我正作「個人行事曆 + Calendar」的功能
 
VB語法一切正常(以前就寫好了)
 
但是,今天想改寫成 C#語法,就會抓不到每個月份「前九天」的資料
例如:  2013/07/01 ~ 07/09的資料就無法呈現?
 
想了一下,發現是日期格式的問題
 
 
資料表裡面,我設定的欄位是「DateTime」,格式 yyyy/MM/dd  2013/07/01
 
但是在Calendar的 DayRender事件裡面,e.Day.Date的格式則是 yyyy/M/d  2013/7/1 
遇見「個位數」的月份、日期,他不會自動補上零
 
 
 
相關文章:
 

 

 

FileUpload控制項「批次上傳 / 多檔案同時上傳」的範例--以「流水號」產生「變數名稱」

 

 

之前的兩個範例:

[C# / ASP.NET]FileUpload控制項「批次上傳 / 多檔案同時上傳」的範例(C#語法)

[VB / ASP.NET]FileUpload控制項「批次上傳 / 多檔案同時上傳」的範例 (VB語法)

 

 

昨天上課時,有個學員拿這個範例來與我討論,希望把寫法作一下修改:

 

==== HTML畫面設計 =====

    首先,進行HTML畫面的設計,

    多重檔案、批次上傳......在畫面上使用多個 FileUpload控制項,然後搭配一個按鈕控制項即可

    

 

==== 後置程式碼 =====

    初學者也可以乖乖地用五個 if判別式來作

    (一個 FileUpload控制項,就作一次,    程式碼不斷COPY 修改即可)。

    只要程式能順利執行,而且您又是剛剛入門的初學者......沒人敢說這樣做不好。

    以下是範例:

if (FileUpload1.HasFile)
{
          string fileName = FileUpload1.FileName;

          //……內容與上面範例相同,在此省略…… 

          FileUpload1.SaveAs(savePath);               
          myLabel.Append("<br>檔名---- " + fileName);
 }

if (FileUpload2.HasFile)
{
          string fileName = FileUpload2.FileName;
          //……省  略……
          FileUpload2.SaveAs(savePath) ;     
}

if (FileUpload3.HasFile)
{
          string fileName = FileUpload3.FileName;
          //……省  略……
          FileUpload3.SaveAs(savePath) ;     
}

//……以此類推……  這種Copy / Paste的作法很累吧~

 

學生(初學者)還在學習中,所以寫出上面的程式,我不會責怪他,畢竟能正確執行更重要。

但如果進入業界,還用這種 Copy / Paste的方法來寫程式,可能會被前輩「唸」一頓

 

****************************************************************************************************************************

第一次改良:

    學員原本提供的作法:

    protected void Button1_Click(object sender, EventArgs e)
    {
        //== 方法一。 ==========================================
        BatchFileUpload(FileUpload1);  //==自己寫的function
        BatchFileUpload(FileUpload2);
        BatchFileUpload(FileUpload3);
        BatchFileUpload(FileUpload4);
        BatchFileUpload(FileUpload5);
    }


    //***********************************************************
    protected void BatchFileUpload(FileUpload myFL)
    {
        String savePath = @"d:\temp\uploads\";

        if (myFL.HasFile)
        {
            String fileName = myFL.FileName;

            savePath = savePath + fileName;
            myFL.SaveAs(savePath);

            Label1.Text += "上傳成功,檔名---- " + fileName;
        }

    }

 

上面的作法是把重複的程式,寫成一個 function來呼叫

不斷地傳入「FileUpload控制項」就能完成多重檔案的上傳。

 

 

****************************************************************************************************************************

第二次改良:

    上述的範例,可以利用 「流水號」產生「變數名稱」 來縮減

 

    protected void Button1_Click(object sender, EventArgs e)
    {
        //== 兩種作法,任選其一 ===================================
 
        //== 方法一。 ==========================================
        // BatchFileUpload(FileUpload1);  //==自己寫的function
        // BatchFileUpload(FileUpload2);
        // BatchFileUpload(FileUpload3);
        // BatchFileUpload(FileUpload4);
        // BatchFileUpload(FileUpload5);
 
        //== 方法二。改寫如下 =====================================
         //== 透過  for 迴圈,以字串相連的方式,做出流水號(連號)的 「變數名稱」
 
        for (int i = 1; i <= Request.Files.Count; i++)
        {
            //***************************************************************
            FileUpload myFL = (FileUpload)Page.Form.FindControl("FileUpload" + i);
            //***************************************************************
 
            BatchFileUpload(myFL);  //==自己寫的function
        }
    }
 
 
    protected void BatchFileUpload(FileUpload myFL)
    {
        //-- 註解:先設定好檔案上傳的路徑,這是Web Server電腦上的目錄。
        //       C#語法在撰寫磁碟的目錄位置時,請留意以下的寫法:
        String savePath = "d:\\temp\\uploads\\";
 
        if (myFL.HasFile)
        {
            String fileName = myFL.FileName;
 
            savePath = savePath + fileName;
            myFL.SaveAs(savePath);
 
            Label1.Text += "<br />上傳成功,檔名---- " + fileName;
        }

 

上面的作法(以「流水號」產生「變數名稱」

    在書本「上集」的聊天室、多重檔案上傳

    書本「下集」的自動化投票區,都有用到相同的技巧。

 

從以前的 ASP到目前的 ASP.NET,包含 PHP與 JSP,我都測試過。   這個技巧都通用!

 

 

 

2012/9/5補充:另外一種作法,請參閱  http://www.allenkuo.com/userfiles/share/2012q3/2012-8-28_08-28-10.png

 

 

另外提供一個很棒的 FileUpload範例,也提到 .ashx的作法(作者:Y2J)

 

 

 --------------------------------------------------------------------------------------------------------------------------------------------

  • 2008/8/11補充:感謝 Nick網友的回應,在MasterPage底下,這段程式會出現一些錯誤。
  • 只有一行必須修改成----
  • myFL = CType(Me.Master.FindControl("ContentPlaceHolder1").FindControl("FileUpload" & i), FileUpload)

Nick網友修改後的範例:Project.rar

 

 

[課程大綱]ASP.NET入門實戰+ADO.NET進階班(七週),教學內容

ASP.NET課程, 補習, 入門班, ASP.NET, VB入門, C#入門, 初學者課程, 簡單學習ASP.NET,
快速上手ASP.NET, 無痛入門,ASP.NET入門,第一次學習ASP.NET就上手, ASP.NET名師,



或許您覺得沒什麼......
      入門有什麼了不起?    ASP.NET有什麼了不起?

但是,想想看:
     為什麼全台補習班都很難開課、很難招生,「只有」這個老師的 ASP.NET課
                  幾年來,台北、台中每班都成功?甚至 "額滿"?

     為什麼 ASP.NET的入門書、範例書,「只有」 這個老師的書 五年來,年年熱賣?

     為什麼 「只有」 這個老師的班級,能吸引「業界工程師」來上課? 從頭開始、從入門學起?
           難道 業界的程式設計師 很笨嗎?不會去找別的連鎖補習班,堅持要找這位老師

     為什麼 「只有」這個老師 開的 ASP.NET課程 (台中市電腦公會、職訓局),需要早起上網、搶著報名
                    為什麼名額能瞬間秒殺?當天額滿?(難道是五月天的演唱會,要排隊搶門票?是連續假期搶訂車票?)

你不是學不會,是找錯人、上錯課!
    你不是學不會,是找錯人、上錯課
        你不是學不會,是找錯人、上錯課!

=================================================================
課程一共七週(49小時)    每天上課 09:00 ~ 17:00

    ASP.NET 入門實戰班(五週),搭配書本 上集。
    ADO.NET   進 階 班(兩週),搭配書本 下集。

本課程採用雙語法教學,每一個範例的重點 VB / C# 都會提及。



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) 六週課程 上線了!




週  數
課程內容(每班學員程度不同、課程進度將略做調配) 對應書本章節
第一週 初學者的兩大FAQ(常見問題)
  • 哪裡有適合 "初學者"的 Visual Studio軟體操作書籍?
  • 我不會寫程式,請介紹 "基礎語法"的書?...第一天就破解您「不會寫程式」的盲點(心結)
過了第一天,保證您不會再問這兩個問題。

ASP.NET的革命與網頁程式的特點。
ASP.NET網頁的特殊之處與傳統網頁的差異?
Response與Request,網頁程式的魔術(藝術?)-- 字串相連。
基礎語法,夠用、善用就好,學多了沒用!只要 "兩招"可以打遍各種範例!
PostBack與觀念,讓您大吃一驚的奇怪範例。....第一天上課 好評最多的一場表演!
Visual Studio操作技巧、「專案」與「網站」的差異?
ASP.NET基礎控制項:
  • AutoPostBack屬性,事件裡面的參數 sender與 e是做什麼用?
  • String.Format()太好用,例如:{0:C}。
  • 清單控制項(List Control,單 / 複選)
  • 不用人教,自己靠經驗,舉一反三學會日曆控制項。
  • 超過150頁的範例,全台灣最豐富的內容、範例!
  • 各種控制項該搭配哪些程式碼?全都為您準備妥當。
  • 哪些控制項可以做出「變形功能」,一一示範。
上集 Ch.2~3
第二週 資料庫入門,資料表與欄位的說明,T-SQL指令。
Windows Azure雲端資料庫 示範與入門。
大型控制項 + SqlDataSource,保證精彩的各種變形、應用:
  • DetailsView + GridView,依靠自己經驗,不用人教就學會FormView。
  • 樣板(Template)與進階技巧,DataBinding Expression。
  • 大型控制項在同一網頁的互動。包含Master-Details(主表明細)、蘋果日報的新聞網頁、搜尋引擎...等等。
  • 不同網頁,透過URL互動
  • 關連式資料庫,不用寫程式就能做好「訂單系統」的報表。(學會這招,再來跟我說:你控制項的設定能力很強了)
好多學員都說:沒上過老師的課,不知道 "大型控制項"能做出這麼多東西?

為什麼其他書、其他老師不講這些重點?難怪學不會。
  • 驚奇!原來大型控制項有Bug,如何突破?....瞭解後,您才知道自己寫程式真的重要!
  • DataBinding原來是這樣,終於領悟。
  • SqlDataSource可以這樣用?不可思議!人人想學的絕招。
上集 Ch.5~9
第三週 徹底解析大型控制項的原理。100% 動手寫程式,瞭解GridView各種功能。
  • GridView各種事件的解析(分頁、編輯、排序、更新、刪除...等等),讓您動手寫程式瞭解其中奧秘。
  • GridView各種事件的「參數 e」是什麼意思?...動手做,三分鐘立刻懂!
  • CommandName是什麼東西?
  • 不用人教,自己靠經驗,舉一反三學會 ListView控制項。而且做出原廠做不到的功能
  • 唯有親自動手寫程式,才能瞭解 DataBinding的奧義!原來如此啊~
初學者的第一個大門檻 -- .FindControl()方法、.Controls集合與範例應用。
    學通之後,您可以千變萬化。
ADO.NET 四大基礎範本,打通任督二脈。
  • 超過 200頁的ADO.NET範例,全台灣最豐富的教學內容!比市售 ADO.NET專書還豐富。
  • DataReader + SqlCommand
  • DataSet + SqlDataAdapter / DataTable
  • EntLib(企業函式庫 的 DAAB)簡介
  •  
  • 只學會一招,我竟然能做出「跨平台」的資料庫程式? Web Form + Windows Form
  • 自己動手寫分頁程式,從資料來源做好分頁。
  • 不可思議!DataReader可以做分頁?Repeater控制項有分頁?
每一個書上解說的"抽象"觀念、您在MSDN網站看不懂的"火星文"說明
在這堂課裡面,通通有範例、有程式碼讓您測試、修改!  眼見為憑!動手為真!
上集 Ch. 10
  Ch.13~14 (ADO.NET)
第四週
(ADO.NET
進階班)
自己動手寫首頁、主表明細(100%的 ADO.NET程式)。
  • 如何搭配複雜的美工網頁,改成ASP.NET版?
  • 文章如何呈現換行(換列、分段落)?文章的點閱率、留言板(關連式資料表)...等等。
jQuery UI如何與 ASP.NET網頁搭配?30分鐘做出Yahoo首頁的效果。
CKeditor / FCKeditor網頁版的 Word操作畫面、線上HTML編輯器(引用第三方的元件、DLL檔)。
自己寫出 ADO.NET "多欄位" 的搜尋引擎。SqlDataSource為何做不到?
看書學不會,現場30分鐘就出師? Web Service(網路服務)與 WCF服務
ADO.NET的DataBinding(資料繫結)與 DataBinding Expression(繫結運算式)
上集 Ch. 13~14 / 20
下集 Ch. 6 / 8 / 9~10
部分範例只有上課才教授,書裡沒有。
第五週
(ADO.NET
進階班)
動手改造「自己專屬」、「獨一無二」的大型控制項。
  • 三個範例學會 GridView的 RowDataBound事件e.Row.RowType(上集最經典的範例!)
  • 原來只要一招,就能學會GridView 72絕技?
    是的,您出師了!而且舉一反三,各大控制項都能這樣用!
Calendar的千變萬化,透過DayRender事件,自己打造個人行事曆
   
(Calendar控制項 + 資料庫。本範例有人出價一萬元收購!
這門課您將會學到「一則心法」,那些高手是如何自我學習?從頭練起?....只有上課的學員才能體會。
狀態管理與會員登入(使用Session)
  • 各種特別的技巧與修正。
  • 物件導向入門,動手寫一個類別檔吧!
  • SQL Injection(資料隱碼、數據注入)攻擊與防範,ADO.NET參數(Parameters)的程式撰寫。
  • 聊天室(透過流水號,自動產生變數)
會員登入後,依照不同權限產生畫面(下集的經典範例在此!)
  • GridView的 RowDataBound事件在這裡玩給你看。 e.Row.RowType與 RowState。
  • PlaceHolder,動態加入ASP.NET控制項。
資料庫交易(Transaction)與 網頁輸出快取(@ Output Cache)
上集 Ch. 3 / 11 / 16
下集 Ch. 7 / 12
部分範例只有上課才教授,書裡沒有。
第六週 UC(使用者控制項)、大腸包小腸(巢狀GridView)
GridView一些特殊的事件與範例。
  • 動態加入JavaScript與 CSS特效。
  • 合併欄位、自訂表頭...等。
網頁與 Excel綜合範例:
  • 傳統作法輸出Excel檔、Jet.OleDb讀取Excel檔。
  • NPOI輸出 Excel檔案(引用第三方的元件、DLL檔)。
  • ADO.NET讀取資料庫並產生 Exce報表。
跨網頁張貼(Cross-Page Post,跨網頁公布),上一頁(PrevieousPage)與公開屬性。
從頭到尾,完成訂單系統的輸入流程(瞭解大型控制項+SqlDataSource的限制在哪?)
驗證控制項(Validation Control / Validator)與正規表達式入門。HTML5可能帶來的變革?
上集 Ch. 4 / 11 / 15
下集 Ch. 13~14
第七週 檔案上傳、FileUpload各種變形與必備範例。
  • 上傳檔名重複,自動更換檔名。
  • 限制上傳檔案(副檔名)、限制上傳容量的大小。
  • 相關的程式小技巧。
多重檔案、批次上傳(透過流水號,自動產生變數)(上集最經典的範例!)
NPOI 搭配 FileUpload讀取 Excel檔
FileUpload + DB + ListView(PChome相片化的首頁、電子相簿範例)
  • 上傳圖片如何存入資料庫?兩種方法,哪一種好?
  • .ashx(泛型處理常式),圖片預覽、讀取資料庫內二進位的圖片內容。
AJAX與 UpdatePanel。
  • 自己寫程式做到AJAX功能、Timer的 Tick事件。
  • 範例:AJAX線上戰情室(圖片切換與ADO.NET的配合)
  • MSDN的範例(微軟出錯,我來修正)。本課程獨有「獨一無二的設定,一招必殺。」。
  • 不可思議的AJAX GridView購物車(微軟給的範例,超讚!)
  • AJAX Toolkit安裝與入門。
上集 Ch. 17 / 18 / 19

師資經歷:
微軟MVP獎得主(自2008年起)
資策會(南區)前任講師
ASP.NET暢銷書作者(台北市 天瓏書局譽為「唯一熱賣」、「常年熱銷」。PChome書店 2011/2012年度暢銷電腦書 ,我的書 上/下兩集都入榜)
美國商業週刊名列「全球百大科技業」技術經理,具有實務經驗(白天仍在上班),絕非坊間補習班聘用的廉價講師
我(MIS2000 Lab.)親自為您授課!
上課時數更多!  
    價錢卻更便宜!(只要大型補習班的 六折 起)  
         師資更強!

有了這三大保證、三大特點
您還不報名,在等什麼?....... 請來信   mis2000lab (at) yahoo.com.tw   (at)就是@的意思

我要報名!,請點選下圖。



[習題]日曆(Calendar)控制項的障眼法(.Visible屬性),使用時才出現?不用就消失?

 

 

昨天上課時,學員發問的問題

作法非常簡單。

 

還是透過 .Visible屬性(現形?隱形),簡單的說,就是障眼法!

 

執行成果如下:

首先,您看不見日曆控制項。

      

 

必須按下「日曆小圖示」,才會出現日曆控制項喔!

然後可以點選日曆,代替自己輸入日期。

      

日期會自動帶入TextBox裡面(這個作法,書本上有了)

 

 

 

這個範例完全沒有技巧,只要拼拼湊湊就能完成

 

昨天上課,沒有教日曆控制項,

    直接靠「經驗」,自己把玩就能做出很多功能。

    這種「自我學習」的方式,面對新技術才會輕鬆......

 

想知道這些學員「上課第一天」就瞬間提升功力的秘訣嗎?......來上課吧!!

 

ASP.NET控制項,讓您「做得更多,寫得更少」

 

您也可以利用 jQuery UI做到類似的功能,請看:http://jqueryui.com/datepicker/

(名為 DatePicker)

 

這裡可以找到很多可愛的日曆小圖示,請看:http://www.iconpng.com/tag/%E5%8F%B0%E5%8E%86

 

 

 

HTML畫面設計:

        請輸入日期:<asp:TextBox ID="TextBox1" runat="server" ReadOnly="True"></asp:TextBox>
 
        <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="您找到的小圖片"
                OnClick="ImageButton1_Click"  />
        <br />
        <br />
 
        <asp:Calendar ID="Calendar1" runat="server" Visible="False"
                 OnSelectionChanged="Calendar1_SelectionChanged"></asp:Calendar>
        (請事先設定Calendar的 .Visible = false,隱形)<br />
        <br />

 

後置程式碼如下:

    (VB只要在程式後面,不加 "分號(;)"即可)

    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        Calendar1.Visible = true;    //看得見!現形!
    }
 
    protected void Calendar1_SelectionChanged(object sender, EventArgs e)
    {
        TextBox1.Text = Calendar1.SelectedDate.ToShortDateString();
 
        Calendar1.Visible = false;    //選完日期後,看不見!隱形!
    }

 

 

 

 

SQL Server 交易式複寫 (Transactional Replication)--學習心得 與 設定重點

簡單的說,有兩台DB
第一台,稱為「發行者」(Distribution / 資料的主要來源)。
第二台,稱為「訂閱者」(Subscription)。接受第一台DB複製過來的資料。

先依照自己的情況,挑選一種複寫方式。
我想,不少需求都是第一種「交易式複寫」便能搞定。 

1. 交易式複寫 *
交易式複寫一般用於伺服器 對 伺服器環境,並適用於下列各案例:
    ‧您希望發生累加式更新時,能立即傳播給「訂閱者」。
    ‧應用程式在發行者進行變更的時間與變更到達訂閱者的”時間”需要有低度延遲
    ‧應用程式需要中繼資料狀態的存取權。例如,若資料列變更五次,交易式複寫允許應用程式回應至每個變更 (如引發觸發程序),而非只有回應至資料列的資料變更。
    ‧發行者有極大量的插入、更新和刪除活動。
    ‧發行者或訂閱者為非 SQL Server 資料庫,如 Oracle。

依預設,交易式發行集的訂閱者應當成唯讀處理,因為變更並不會寫回發行者。


2. 合併式複寫
合併式複寫通常會在 伺服器 至 用戶端環境中使用。
合併式複寫適合於下列任何情況:
    ‧多個訂閱者可能會在不同時間更新相同的資料,並將這些變更傳播到發行者與其他訂閱者。
    ‧「訂閱者」需要接收資料、離線變更資料,稍後同步變更「發行者」和其他「訂閱者」。
    ‧每個訂閱者需要一個不同的資料分割。
    ‧可能會發生衝突,而在發生衝突時,您需要偵測與解決衝突的能力。
    ‧應用程式需要淨資料變更,而非對中繼資料狀態的存取。例如,如果資料列在「訂閱者」與「發行者」同步之前,於「訂閱者」端變更了五次,則該資料列只需在「發行者」端變更一次,以反映最終資料變更 (即第五次的值)。

合併式複寫允許各站台自發地工作,然後將更新合併到單一的統一結果。


3. 快照式複寫
若下列一或多項敘述為真,則最適合單獨使用快照式複寫:
    ‧較少變更資料。
    ‧可接受已過時的發行者相關資料副本放置一段時間。
    ‧複寫小量資料時。
    ‧在短時間內發生大量變更。

資料變更數量可觀  但次數不頻繁時,最適合快照式複寫。


***************************************************************************************************************************************
有一些相關的文章,可以先參考一下。
網友的經驗談、安裝步驟都有圖片說明了。話雖如此,我還是買了幾本書先看過一遍。

***************************************************************************************************************************************

當然,微軟有一份說明也很詳細。步驟最明確!


我是依照 "微軟的教學課程" 來做實驗,個人心得如下
   無法保證正確,因為我不是網管與DBA高手。但我做了很多次,這是成功經驗
================================================
1.  文件中提到的多個帳號,我只用了一個就能完成。
    重點,這個帳號必須在兩台DB都有權限最好設定 "高"一點,以免後續步驟的執行權限不足

2. 發行者(第一台DB),資料的主要來源。這個資料庫請設定為 sa,以免後續步驟的執行權限不足
    點選這一個資料庫,按下"滑鼠右鍵"並選「屬性 Property」
    畫面左側的 Menu,請選第二個 Files。
    然後在畫面右邊的第二格,請輸入 sa(原本可能寫 default).....微軟上面的教學文章沒有提到這一點

執行權限不足,是我十餘次設定中最常發生的錯誤。 
另外幾個「權限設定」在微軟的教學文章中有提到。只要沒有漏了做,應該都能運作。
...........................完成了上面兩個重點(微軟教學文章中沒有提到),就OK啦!

3. 本文一開始收錄的相關BLOG文章,其他網友、前輩都會自己寫SQL Script來做設定。
    微軟教學文件中、我自己的設定經驗,發覺這並非必要條件。
    只要依照微軟的教學文章,畫面上的精靈步驟逐一做好,效果是一樣的。
    精靈設定,完成後一樣可以產生SQL Scriipt,我有拿出來其他前輩的寫法作比對,100%雷同。

4. "似乎(我不確定)"只能複寫「資料表(Table)」
    設定過程中,我把 View、Stored Procedure打勾以後,都會造成失敗。
    網路上看見的設定步驟(包含微軟教學文件),都 "只有" 勾選「資料表(Table)」

5. 「資料表(Table)」必須要有主索引鍵(P.K. / Primary Key)
    不然的話,不能勾選(不能複寫到別人身上)


我想,不少需求都是第一種「交易式複寫」便能搞定。 
    小型的資料庫(例如幾百MB的 .mdf檔),延遲時間大約只有一秒 (Intranet裡面比較快)。
    稍微大一點的資料庫(例如20GB的 .mdf檔),延遲時間則可能到達十餘秒才能複寫過去(如果是 Internet不知道會不會更慢?)
但效果已經不錯了。

資料庫的大小,跟運作時間有正相關。
    在建立(設定)時、或是重新 run一次快照(snapshot)會很花時間
    我曾經放置一天就發現 複寫的Agent壞了,必須重來一次(重新做  Reinitialization才恢復)

如果做壞了,想要重新設定「複寫」(把原本的設定刪除)
有時需要重新啟動SQL Server服務才能將步驟重做一次


== 結 論 ==
    設定很簡單......微軟的產品與設定,大家不用擔心
    重點是 發生問題時該 怎麼處理?

    書上都沒講到(這些 "經驗" 比較寶貴,但比較難取得)


因為網管、DBA這部分我不熟悉,初學的時候,比較難下關鍵字
所以常常 Google不到資訊,但是在對岸的百度(http://www.baidu.com/就很容易查到東西