顯示具有 Calendar 標籤的文章。 顯示所有文章
顯示具有 Calendar 標籤的文章。 顯示所有文章

2017年1月9日 星期一

13/30 網頁與資料庫#5 -- 樣板裡面的 Calendar日曆控制項「編輯DataBinding」無法呈現日期?

樣板裡面的 Calendar日曆控制項「編輯DataBinding」無法呈現日期?
ASP.NET 大型控制項轉成「樣板(Template)」以後,沒想到日曆控制項會遇見這種錯誤?
對應資料表欄位的 DateTime格式會出一點小bug。
幸好透過資料繫結運算式 (DataBinding Expression)就能修正,很簡單。
SelectedDate='<%# Convert.ToDateTime(Eval("欄位名稱", "{0:yyyy/MM/dd}")) %>' .... 
當資料表裡面的日期與時間,預設的時間是 上午12:00:00 或是 00:00:00。
日曆控制項正常呈現。
圖片下方,資料表裡面的「時間」不是預設值的時候,日曆控制項無法呈現結果????


透過影片教學來分享這個有趣範例......

關於本文與範例,請看 www.dotblogs.com.tw/mis2000lab/archive/2015/08/05/databinding-expression-calendar-datetime-template.aspx
下一篇文章,請看:
網頁與資料庫#6 -- SqlDataSource做不到、做不好的地方

2014年1月4日 星期六

.FindControl()補充範例(GridView的新增樣版,搭配第三章Calendar範例)與 NamingContainer


.FindControl()補充範例(GridView的新增樣版,搭配第三章Calendar範例)與 NamingContainer



這是課程&書本的補充教材

請完成書本(上集)的 .FindControl()教學
並練習下面這個範例以後,才來看本篇文章


上一個範例採用  DetailsView
因此使用 .FindControl()方法時比較簡單
只要寫  DetailsView1.FindControl("Calendar1")
就能抓到樣板內的子控制項

如果換成 GridView或是 ListView
則是呈現「大量、多筆記錄」
必須寫成 ( C#語法,VB請把中括夸號改為小括號 )  --
      GridView1.Rows[ Index數字 ] .FindControl()
      ListView1.Items[ Index數字 ] .FindControl()
 

作法跟上一篇範例一樣,程式碼如下:

VB 語法 :
================================
    Protected Sub GridView1_RowEditing(sender As Object, e As GridViewEditEventArgs) Handles GridView1.RowEditing
        Session("RowIndex") = e.NewEditIndex
    End Sub
 
 
    '********************************************************
    '** 請使用 C#的方式,在屬性視窗的「閃電標誌」來設定這個事件
    Protected Sub Calendar1_SelectionChanged(sender As Object, e As EventArgs)  注意!在此沒有 Handles這個關鍵字!
        Dim rowIndex As Integer = Convert.ToInt32(Session("RowIndex"))
 
        Dim TB As TextBox = GridView1.Rows(rowIndex).FindControl("TextBox1")
        '-- 寫成這樣更好  Dim TB As TextBox = CType(GridView1.Rows(rowIndex).FindControl("TextBox1"), TextBox)
        Dim CA As Calendar = GridView1.Rows(rowIndex).FindControl("Calendar1")
        '-- 寫成這樣更好  Dim CA As Calendar = CType(GridView1.Rows(rowIndex).FindControl("Calendar1"), Calendar)
 
        TB.Text = CA.SelectedDate.ToShortDateString()
    End Sub


C# 語法:
================================
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        Session["RowIndex"] = e.NewEditIndex;
    }
 
 
    protected void Calendar1_SelectionChanged(object sender, EventArgs e)
    {
        int rowIndex = Convert.ToInt32(Session["RowIndex"]);
 
        TextBox TB = (TextBox)GridView1.Rows[rowIndex].FindControl("TextBox1");
        Calendar CA = (Calendar)GridView1.Rows[rowIndex].FindControl("Calendar1");
 
        TB.Text = CA.SelectedDate.ToShortDateString();
    }


Session的用法,請看上集第十六章,狀態管理
也可以改用 ViewState來做


2014/1/2 補充
本範例有兩個改版,
    (1). 日曆控制項使用 sender來做,不需用到 .FindControl()
    (2). 使用 NameContainer來處理。
 






............................. 寫信給我,mis2000lab (at) yahoo.com.台灣.........................................................
  C#
 VB
     
   (上集)上市半年熱銷 3,500本 再版
  
C# + VB 雙語法

下集  為   VB、C#  「雙語法」版本,物超所值!上一版熱銷七刷
南無普光佛  南無普明佛  南無普淨佛  南無多摩羅跋栴檀香佛  南無栴檀光佛  南無摩尼幢佛  南無歡喜藏摩尼寶積佛  南無一切世間樂見上大精進佛   南無摩尼幢燈光佛  南無慧炬照佛  南無海德光明佛   南無金剛牢強普散金光佛  南無大強精進勇猛佛  南無大悲光佛   南無慈力王佛  南無慈藏佛  南無栴檀窟莊嚴勝佛  南無賢善首佛   南無善意佛  南無廣莊嚴王佛  南無金華光佛  南無寶蓋照空自在力王佛  南無虛空寶華光佛  南無琉璃莊嚴王佛  南無普現色身光佛  南無不動智光佛  南無降伏眾魔王佛  南無才光明佛  南無智慧勝佛  南無彌勒仙光佛  南無善寂月音妙尊智王佛  南無世淨光佛  南無龍種上尊王佛  南無日月光佛  南無日月珠光佛  南無慧幢勝王佛  南無師子吼自在力王佛  南無妙音勝佛  南無常光幢佛  南無觀世燈佛  南無慧威燈王佛  南無法勝王佛  南無須彌光佛  南無須曼那華光佛  南無優曇鉢羅華殊勝王佛  南無大慧力王佛  南無阿閦毗歡喜光佛  南無無量音聲王佛  南無才光佛   南無金海光佛  南無山海慧自在通王佛  南無大通光佛  南無一切法常滿王佛  南無釋迦牟尼佛   南無金剛不壞佛  南無寶光佛  南無龍尊王佛  南無精進軍佛  南無精進喜佛  南無寶火佛  南無寶月光佛  南無現無愚佛  南無寶月佛  南無無垢佛  南無離垢佛   南無勇施佛  南無清淨佛  南無清淨施佛  南無娑留那佛  南無水天佛  南無堅德佛  南無栴檀功德佛  南無無量掬光佛  南無光德佛  南無無憂德佛  南無那羅延佛  南無功德華佛  南無蓮華光遊戲神通佛  南無財功德佛  南無德念佛  南無善名稱功德佛  南無紅燄帝幢王佛  南無善遊步功德佛  南無鬪戰勝佛   南無善遊步佛  南無周匝莊嚴功德佛  南無寶華遊步佛  南無寶蓮華善住娑羅樹王佛   南無法界藏身阿彌陀佛








 
............................. 寫信給我,mis2000lab (at) yahoo.com.台灣........................................................
.............................   facebook社團   https://www.facebook.com/mis2000lab   ............................
.............................   Google+   https://plus.google.com/100202398389206570368/posts ..............

2013年9月5日 星期四

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 
遇見「個位數」的月份、日期,他不會自動補上零
 
 
 
相關文章:
 

 

 

[習題]日曆(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;    //選完日期後,看不見!隱形!
    }