- 濾心、濾心、濾心;不要被五花八門的名詞嚇到,重點還是在濾心。
- 濾心的壽命;這是除了淨水器外一筆長期支出,所以也是要好好考慮。
- 選擇合適的過濾方式。
但我一直找不到「台灣各地水質」的資料,讓我想要了解一下現在居住地區水品質,再來參考購買那種過濾器,這是唯一我無法進行的地方。
結論:
有錢就買好一點;沒錢就買差一點。(凸)
參考:
淨水方法比較
如何選擇淨水器?
註:如果各位想走技術這條路且經濟許可,去「電腦補習班」、「英文補習班」我個人覺得是個不錯選擇,學校在科目的時間不夠集中,例如一門CCNA課程,要花二~四學期,太久了。好好利用課餘或假期,去電腦補習班幾個月就搞定了。不管是技術或語言,專精一項目,集中時間大量練習,是快速提升的不二法門。
Function Blog(date, time){
this.date = date;
this.time = time;
}
Blog.prototype.sign = 'Bruce';
if (me.today == me.yesterday) me.tomorrow = null;
賴榮樞的工作經歷
這是我們資訊界一位老前輩多年來資歷,發表日期是4/9日星期五早上凌晨,為什麼我知道是凌晨,因為我還在準備資料,我睡不到幾個給小時早上五點半就又醒來準備,所以我很清礎,我也怕,我怕誤了大家。
1, 4, 36, 54, 5 (請先選擇)
1% 優渥4% 積蓄36% 死亡54% 救濟5% 零工、流浪、乞討
四技部課程與證照對照表這是多棒的資訊,這可是我們以前沒有的,你們知道這是什麼嗎,這是餅,而且是大餅,學校在一開始就規劃好了完整的地圖給各位,也會按步就班的教各位如何拿到這個餅。
二技部課程與證照對照表
五專部課程與證照對照表
春有百花秋有月,
夏有涼風冬有雪,
若無閒事掛心頭,
便是人間好時節。
宋朝,無門慧開禪師
很多事,說再多聽再多也沒有用,因為你不會有感受,好好的去過你的日子,你的人生。等有一天你通了,了解什麼是「世事洞明皆學問」你已經成功了一半,進而加強提升「人情練達即文章」的層次修為,那你一定可以有個精彩的人生。「世事洞明皆學問,人情練達即文章。」
''' <summary>
    ''' 建立 GridView 控制項中的資料列時發生。 
    ''' <summary>
    ''' <remarks>必須先為控制項中的每個資料列建立 GridViewRow  物件,才能呈現 GridView 控制項。建立 GridView 控制項中的每個資料列時,會引發 RowCreated  事件。</remarks>
    Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated
        'e.Row:取得所建立或繫結(Binding)到資料的資料列。 
        'e.Row.Cells(i):i是數值,存取資料列的第i個儲存格。
        'e.Row.RowType:在執行作業之前判斷資料列的型別。
        '範例:http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.gridview.rowcreated%28v=VS.80%29.aspx
    End Sub
''' <summary>
    ''' 按一下 GridView 控制項中的按鈕時發生。 
    ''' </summary>
    Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
        '通常判斷e.CommandName與e.CommandArgument來進行一些額外的事件處理
        'e.CommandName有些內建關鍵字,會引發特定行為與事件(http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.gridview.rowcommand%28v=VS.80%29.aspx)
        'e.CommandName:取得自訂按鈕命令名稱
        'e.CommandArgument:取得自訂按鈕命令引數
        'e.CommandSource:存取引發事件的按鈕控制項
        '自訂按鈕,命令名稱為"cancelSelected"
        If e.CommandName = "cancelSelected" Then
            GridView1.SelectedIndex = -1
        End If
    End Sub
''' <summary>
    ''' 資料列繫結(Binding)至 GridView 控制項中的資料時發生。 
    ''' </summary>
    ''' <remarks>控制項中的每個資料列必須都繫結(Binding)至資料來源中的資料錄,才能呈現 GridView  控制項。資料列 (由 GridViewRow  物件表示) 繫結(Binding)至 GridView 控制項中的資料時,會引發 RowDataBound 事件。這可讓您提供事件處理方法,用於每次發生這個事件時執行自訂常式,例如修改繫結(Binding)至資料列之資料的值。GridViewRowEventArgs 物件會傳遞至事件處理方法,讓您存取正在繫結(Binding)之資料列的屬性。若要存取資料列中的特定儲存格,請使用 GridViewRowEventArgs 物件的 Cells 屬性。您可以使用 RowType 屬性決定繫結(Binding)那種資料列型別 (標頭資料列、資料列等)。</remarks>
    Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
        'e.Row:取得所建立或繫結(Binding)到資料的資料列。 
        'e.Row.Cells(i):i是數值,存取資料列的第i個儲存格。
        'e.Row.RowType:在執行作業之前判斷資料列的型別。
        '1. DataRow:GridView 控制項中的資料列。(常用)
        '2. Footer:GridView 控制項的頁尾資料列。
        '3. Header:GridView 控制項的標頭資料列。
        '4. EmptyDataRow:GridView 控制項中的空白資料列。
        '5. Pager:GridView 控制項中的頁面巡覽列。
        '6. Separator:GridView 控制項中的分隔列。
        '如果資料的類型是「資料列DataRow」,第一個儲存格文字改為粗體。
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Cells(1).Text = "<b>" & e.Row.Cells(1).Text & "</b>"
        End If
    End Sub
''' <summary>
    ''' 按一下資料列的 [刪除] 按鈕時發生 (但在 GridView 控制項刪除資料列之前)。 
    ''' </summary>
    Protected Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView1.RowDeleting
        'e.Keys:取得欲刪除那筆資料的PK值。查看DataKeyNames屬性,就可以知道PK值有那些。
        'e.Cancel:Boolean,True表示取消刪除動作。
        'e.Values:取得要刪除那筆資料的"欄位值"
        'e.RowIndex:目前要刪除這筆資料在GridView中的索引值。注意,Index及PK是不同東西。Index指的是排序順序,另外GridView有啟用分頁,假設每頁10筆,則第2頁第一筆資料的RowIndex是0非10。
        If e.Keys("CustomerID") = "ALFKI" Then
            Response.Write("此資料不能刪除!")
            e.Cancel = True
        End If
    End Sub
''' <summary>
    ''' 按一下資料列的 [刪除] 按鈕時發生 (但在 GridView 控制項刪除資料列之後)。
    ''' </summary>
    Protected Sub GridView1_RowDeleted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeletedEventArgs) Handles GridView1.RowDeleted
        'e.AffectedRows:刪除筆數。
        'e.Keys:取得欲刪除那筆資料的PK值。
        'e.Values:取得要刪除那筆資料的"欄位值"。
        'e.Exception:若刪除發生例外,可透過e.Exception取得例外相關資訊。
        'e.ExceptionHandled:Boolean,當例外發生且e.ExceptionHandled沒有為True時,會值接在網頁上顯示例外的錯誤畫面。
        '確認是否有刪除例外發生
        If e.Exception Is Nothing Then
            Response.Write("刪除" & e.AffectedRows & "筆資料:" & e.Keys("CustomerID") & "," & e.Values("CompanyName"))
        Else
            '不要產生錯誤畫面
            e.ExceptionHandled = True
            Response.Write(e.Exception.Message)
        End If
    End Sub
''' <summary>
    ''' 按一下資料列的 [編輯] 按鈕時發生 (但在 GridView 控制項進入編輯模式之前)。 
    ''' </summary>
    ''' <remarks>RowEdit沒有ed事件(RowEdited),因為進入Edit模式後,是由RowUpdating/RowUpdated接手處理。</remarks>
    Protected Sub GridView1_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GridView1.RowEditing
        'e.Cancel:Boolean,True表示取消編輯動作。
        'e.NewEditIndex:取得或設定要編輯之資料列的索引。
        '按下「編輯」按鈕的這一資料列(e.NewEditIndex)進入編輯模式
        GridView1.EditIndex = e.NewEditIndex
    End Sub
''' <summary>
    ''' 按一下處於編輯模式之資料列的 [取消] 按鈕時發生 (但在資料列結束編輯模式之前)。 
    ''' </summary>
    Protected Sub GridView1_RowCancelingEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles GridView1.RowCancelingEdit
        'e.Cancel:Boolean,True表示取消編輯模式。
        'e.RowIndex:目前要取消這筆資料在GridView中的索引值。
        '取消編輯模式
        'e.Cancel = True 
        '在VB中「-1」(負1)也有取消的意思
        GridView1.EditIndex = -1
    End Sub
''' <summary>
    ''' 按一下資料列的 [更新] 按鈕時發生 (但在 GridView 控制項更新資料列之前)。 
    ''' </summary>
    Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating
        'e.Keys:取得欲更新那筆資料的PK值。
        'e.Cancel:True表示取消更新動作。
        'e.OldValues:取得更新那筆資料,除了PK欄位之外的原始值。
        'e.NewValues:取得欲更新那筆資料,除了PK欄位之外的更新值。
        'e.RowIndex:目前要更新這筆資料在GridView中的索引值。
        Dim cmpName As String = Trim(e.NewValues("CompanyName"))
        If cmpName.Length = 0 Then
            Response.Write("公司名稱不可為空白")
            e.Cancel = True
        End If
    End Sub
''' <summary>
    ''' 按一下資料列的 [更新] 按鈕時發生 (但在 GridView 控制項更新資料列之後)。 
    ''' </summary>
    Protected Sub GridView1_RowUpdated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdatedEventArgs) Handles GridView1.RowUpdated
        'e.AffectedRows:更新筆數。
        'e.Keys:取得欲更新那筆資料的PK值。
        'e.OldValues:取得更新那筆資料,除了PK欄位之外的原始值。
        'e.NewValues:取得欲更新那筆資料,除了PK欄位之外的更新值。
        'e.KeepInEditMode:Boolean,是否讓GridView維持在編輯模式。
        'e.Exception:若更新發生例外,可透過e.Exception取得例外相關資訊。
        'e.ExceptionHandled:Boolean,當例外發生且e.ExceptionHandled沒有為True時,會值接在網頁上顯示例外的錯誤畫面。
        If e.Exception Is Nothing Then
            Response.Write("成功更新 " & e.AffectedRows & " 筆資料.")
        Else
            e.ExceptionHandled = True
            Response.Write(e.Exception.Message)
            e.KeepInEditMode = True
        End If
    End Sub
''' <summary>
    ''' 按一下其中一個頁面巡覽區按鈕時發生 (但在 GridView 控制項處理分頁作業之前)。 
    ''' </summary>
    ''' <remarks>以程式設計的方式設定 PageIndex  屬性時,不會引發這個事件。</remarks>
    Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging
        'e.Cancel:Boolean,True表示取消分頁選取模式。
        'e.NewPageIndex:取得或設定要在 GridView  控制項中顯示的新頁面索引。
        '按下「分頁」選擇,讓GridView顯示指定的分頁(e.NewPageIndex)
        GridView1.PageIndex = e.NewPageIndex
    End Sub
''' <summary>
    ''' 按一下其中一個頁面巡覽區按鈕時發生 (但在 GridView  控制項處理分頁作業之後)。 
    ''' </summary>
    Protected Sub GridView1_PageIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.PageIndexChanged
        '在產生「Page 1 of 10 .」的提示資訊。
        Response.Write("Page " & (GridView1.PageIndex + 1).ToString() & " of " & GridView1.PageCount.ToString() & ".")
    End Sub
''' <summary>
    ''' 按一下資料列的 [選取] 按鈕時發生 (但在 GridView 控制項處理選取作業之前)。 
    ''' </summary>
    ''' <remarks>以程式設計的方式設定 SelectedIndex  屬性時,不會引發這個事件。</remarks>
    Protected Sub GridView1_SelectedIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSelectEventArgs) Handles GridView1.SelectedIndexChanging
        'e.NewSelectedIndex:取得或設定要在 GridView  控制項中選取之新資料列的索引。
        'e.Cancel:Boolean,True表示取消選取事件。
        '按下「選取」按鈕的這一資料列(e.NewSelectedIndex)進入選取模式
        GridView1.SelectedIndex = e.NewSelectedIndex
        '另一種寫法
        'GridView1.SelectedIndex = GridView1.SelectedIndex
    End Sub
''' <summary>
    ''' 按一下資料列的 [選取] 按鈕時發生 (但在 GridView 控制項處理選取作業之後)。 
    ''' </summary>
    Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged
        '在選取完成後,顯示所選取資料列第三個儲存格(Cells從0開始計算)的資料。
        Response.Write("You selected: " & GridView1.SelectedRow.Cells(2).ToString() & ".")
    End Sub
''' <summary>
    ''' 按一下排序資料行的超連結時發生 (但在 GridView 控制項處理排序作業之前)。
    ''' </summary>
    ''' <remarks>按一下排序資料行的超連結時,會引發 Sorting 事件 (但在 GridView 控制項處理排序作業之前)。</remarks>
    Protected Sub GridView1_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles GridView1.Sorting
        'e.Cancel:Boolean,True表示取消排序事件。
        'e.SortDirection:取得或設定排序 GridView  控制項的排序方向。
        'e.SortDirection.Ascending():小到大,A~Z。
        'e.SortDirection.Descending():大到小:Z~A。
        'e.SortExpression:取得或設定運算式,用來排序 GridView 控制項中的項目。
        '切換大小排序
        If e.SortDirection = SortDirection.Ascending Then
            e.SortDirection = SortDirection.Descending
        Else
            e.SortDirection = SortDirection.Ascending
        End If
        '欄位Brithday不能排序
        If e.SortExpression = "Birthday" Then
            e.Cancel = True
            Response.Write("You cannot sort by Birthday.")
        End If
    End Sub
''' <summary>
    ''' 按一下排序資料行的超連結時發生 (但在 GridView 控制項處理排序作業之後)。 
    ''' </summary>
    Protected Sub GridView1_Sorted(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.Sorted
        '顯示排序方法及排序欄位
        Response.Write("Sorting by " & GridView1.SortExpression.ToString() & " in " & GridView1.SortDirection.ToString() & " order.")
    End Sub
人生有方向,是多麼重要及快樂的一件事。
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
        If e.CommandName = "Add" Then
            Dim rowindx As Integer = CType((CType(e.CommandSource, Button).NamingContainer), GridViewRow).RowIndex
            For i As Integer = 0 To GridView1.Rows.Count - 1
                If i = rowindx Then
                    GridView1.Rows(rowindx).BackColor = Drawing.Color.Red
                Else
                    GridView1.Rows(i).BackColor = Drawing.Color.White
                End If
            Next
        End If
    End Sub
<!--[if IE]><script language="javascript" type="text/javascript" src="excanvas.js"></script><![endif]--> <script language="javascript" type="text/javascript" src="jquery-1.3.2.min.js"></script> <script language="javascript" type="text/javascript" src="jquery.jqplot.min.js"></script> <link rel="stylesheet" type="text/css" href="jquery.jqplot.css" />
/*問卷統計圓餅圖*/
var plot1 = $.jqplot('chartQ1', [line1], {
    title: 'Q1職業分析',
    seriesDefaults: { renderer: $.jqplot.PieRenderer, rendererOptions: { sliceMargin: 8} },
    legend: { show: true }
});
Dim line As New Literal()
'資料庫處理…
'整理出相關統計數據…
'整理出我們需要的參數格式
line.Text += "<script type='text/javascript'> var " & lineName & " = [['網管(" & Q1sum1.ToString & "票-" & ((Q1sum1 / sum) * 100).ToString("##.##") & "%)'," & Q1sum1.ToString() & _
"],['採購(" & Q1sum2.ToString() & "票-" & ((Q1sum2 / sum) * 100).ToString("##.##") & "%)'," & Q1sum2.ToString() & _
"],['網咖主(" & Q1sum3.ToString() & "票-" & ((Q1sum3 / sum) * 100).ToString("##.##") & "%)'," & Q1sum3.ToString & _
"],['系統人員(" & Q1sum4.ToString() & "票-" & ((Q1sum4 / sum) * 100).ToString("##.##") & "%)'," & Q1sum4.ToString & _
"],['其他(" & Q1sum5.ToString() & "票-" & ((Q1sum5 / sum) * 100).ToString("##.##") & "%)'," & Q1sum5.ToString() & "]]</script>"
'加到PlaceHolder控制項
phJS.Controls.Add(line)
End Sub
<script type='text/javascript'> var line1 = [['網管(12票-7.19%)',12],['採購(37票-22.16%)',37],['網咖主(17票-10.18%)',17],['系統人員(17票-10.18%)',17],['其他(0票-%)',0]] </script>
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
        '中斷GridView與sqlDataSource的「綁定,Binding」,讓GridView進入EmptyDataTemplate樣板
        If e.CommandName = "GridInsert" Then
            GridView1.DataSourceID = Nothing
        End If
    End Sub
Protected Sub bntBack_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        'sqlDSNW請修改為自己的名稱
        GridView1.DataSourceID = "sqlDSNW"
    End Sub
Protected Sub bntBack_Click1(ByVal sender As Object, ByVal e As System.EventArgs)
        'sqlDSNW請修改為自己的名稱
        GridView1.DataSourceID = "sqlDSNW"
    End Sub
ps..這裡我是故意把兩個Button取同樣的名稱,我發現在VS2008與VS2010(或應該說.NET Framework 2.0與4.0的CLR)一些差異,在VS2008中,會建成Click與Click1兩個副程式,但在VS2010中它會很聰明共用同一個Click副程式,所以會少打一行程式碼。但實務上應該會不有人那麼無聊沒事放兩個Back的按鈕,而且還取相同名稱。當然也可能是表頭放一個、表尾放一個,但名子不要一樣,一行程式應該不會影響你很多效能與時間吧!
ps..基本上只要資料控制項有支援「Insert」功能,都能拿來做GridView的新增功能控制項,再利用上敘方法加入返回GridView頁面功能即可。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  Dim localIP As String = ""
  '取得連線的IP
  localIP = Request.ServerVariables("REMOTE_ADDR").ToString
  Dim IP() As String = localIP.Split(".")
  '判斷前三碼是否為內網IP段
  If IP(0) <> "192" OrElse IP(1) <> "168" OrElse IP(2) <> "3" Then
    Response.Write(">script type="text/javascript">
alert('此網頁只能從公司內網進入!網頁將轉向首頁!')
>/script>")
    Response.Redirect("http://kkbruce.blogspot.com/")
  End If
End Sub
End Class
古人說:「師父領進門,修行看個人。」我最近終於去拜師了,我試了好久,應該這樣說,我之前沒時間沒機會沒現金,所以我在資訊的路上通常只能走「無師自通」的路,像之前為了研發公司自有DDNS服務,就花去我近半年的時間,實在好累,不過也很爽,你能做出來別人沒有的東西,就是一種成就。
GridView完整破解攻略--可自動返回上一頁(資料顯示頁),讓GridView擁有完整的「新增、刪除、修改、更新」四大功能,而且操作流程上「順的不得了」。只需要一點點點點點點點程式,欲知結果,請下回分曉!