使用Button的Command,CommandArgument來實現。 .aspx 實作3個Button Object, OnCommand呼叫同一個Function, CommandArgument設定參數,此處設定Object名稱。 <asp:Button ID="Button1" runat="server" Text="Button1" CommandArgument="Calendar1" OnCommand="ButtonCommand" /> <asp:Button ID="Button2" runat="server" Text="Button2" CommandArgument="Calendar2" OnCommand="ButtonCommand" /> <asp:Button ID="Button3" runat="server" Text="Button3" CommandArgument="Calendar3" OnCommand="ButtonCommand" /> .vb 使用FindControl取得Object。 按各別按鈕會顯示/隱藏指定的日曆元件。 Public Sub ButtonCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs) Dim c As Calendar = FindControl(e.CommandArgument) c.Visible = Not c.Visible End Sub
~relax~
目前分類:C#/VB/ASP.NET (46)
- Aug 11 Thu 2011 14:13
ASP.NET Button Click 帶參數的方法
- Aug 11 Thu 2011 14:08
ASP.NET FindControl的用法
1. 一般頁面 Dim tb as TextBox = FindControl("TextBox1")
2. 有MasterPage的頁面 Dim tb as TextBox = Master.FindControl("Content").FindControl("TextBox1")
- Jul 07 Thu 2011 11:27
JAVA、C#、VB 物件導向的傳值呼叫/傳址呼叫
以前在寫C語言的時候,常常使用到傳值呼叫/傳址呼叫,用的很理所當然~
但是當我看了JAVA的教學文章後,突然發現,怎麼沒有傳值呼叫/傳址呼叫呢?
雖然不常用,但是,想用卻沒得用~可是會很困擾呢!
JAVA已經預設了參數的傳遞方式:
- Jul 05 Tue 2011 17:16
物件導向的基本觀念
還記得第一次使用VB.NET寫陣列時,發生了一件令我百思不解的問題,就是當我將某一變數指定某一物件後,使用該變數更改內容,原本物件的內容也會被一併更改...
【使用陣列來舉例】
提一下陣列的宣告:
- Jul 02 Sat 2011 14:07
ASP.Net 完整的Mail寄信功能
public bool Mail_Send(string MailFrom, string[] MailTos,string[] Ccs, string MailSub, string MailBody, bool isBodyHtml,string[] filePaths) { try { //防呆 if (MailFrom == "") { MailFrom = "sysadmin@system.com.tw"; } //命名空間: System.Web.Mail已過時,http://msdn.microsoft.com/zh-tw/library/system.web.mail.mailmessage(v=vs.80).aspx //建立MailMessage物件 System.Net.Mail.MailMessage mms = new System.Net.Mail.MailMessage(); //指定一位寄信人MailAddress mms.From = new MailAddress(MailFrom); //信件主旨 mms.Subject = MailSub; //信件內容 mms.Body = MailBody; //信件內容 是否採用Html格式 mms.IsBodyHtml = isBodyHtml; if (MailTos !=null)//防呆 { for (int i = 0; i < MailTos.Length; i++) { //加入信件的收信人(們)address if (!string.IsNullOrEmpty(MailTos[i].Trim())) { mms.To.Add(new MailAddress(MailTos[i].Trim())); } } }//End if (MailTos !=null)//防呆 if (Ccs!=null) //防呆 { for (int i = 0; i < Ccs.Length; i++) { if (!string.IsNullOrEmpty(Ccs[i].Trim())) { //加入信件的副本(們)address mms.CC.Add(new MailAddress(Ccs[i].Trim())); } } }//End if (Ccs!=null) //防呆 if (filePaths!=null)//防呆 {//有夾帶檔案 for (int i = 0; i < filePaths.Length; i++) { if (!string.IsNullOrEmpty(filePaths[i].Trim())) { Attachment file = new Attachment(filePaths[i].Trim()); //加入信件的夾帶檔案 mms.Attachments.Add(file); } } }//End if (filePaths!=null)//防呆 SmtpClient client = new SmtpClient("msa.hinet.net");//或公司、客戶的smtp_server //以下可以省略,因為寄信不用帳密(除非客戶特別要求) client.Credentials = new System.Net.NetworkCredential(WebConfigurationManager.AppSettings["SMTPsendusername"], WebConfigurationManager.AppSettings["SMTPsendpassword"]); client.Send(mms);//寄出一封信 return true;//成功 } catch { return false; } } //寄信人E-mail string From_mail = "from_mail@hotmail.com"; //收信人E-mail string[] to_emails = new string[] { @"to_email@hotmail.com", @"to_email2@hotmail.com" }; //副本 string[] to_cc = new string[] { @"to_email@hotmail.com", @"to_email2@hotmail.com" }; //主旨 string Subject = "我是主旨"; //內文 string htmlBody = TextBox1.Text.Trim().Replace(Environment.NewLine, " "); //附檔在WebServer上的路徑 string[] filePaths = new string[] { @"D:\web\upload\xxx.xls", @"D:\web\upload\test.txt" }; //寄信 bool sendResult = Mail_Send(From_mail, to_emails, to_cc, Subject, htmlBody, true, filePaths);
- Jun 07 Tue 2011 15:38
ASP.NET Ajax GridView 換頁,瀏覽器[上一頁]的history功能
※只能適用於GirdView的換頁,如果是轉跳到不同url的頁面,則[上一頁]的history功能一樣失效。
實驗的結果,轉跳不同url也可成功"回上一頁"。
但如果GridView有做ajax篩選,則一樣會失敗。
目前解決辦法是,不要做ajax篩選,只有ajax換頁。
- May 24 Tue 2011 14:57
ASP.NET C# 請假系統邏輯程式碼
public void DataTimeMath() { if (drpHourStart.SelectedIndex == 0) drpMinuteStart.SelectedIndex = 1; //不可早於8點30,強制設定8點30為最早 if (drpHourEnd.SelectedIndex == 0) drpMinuteEnd.SelectedIndex = 1; //不可早於8點30,強制設定8點30為最早 if (txtDateStart.Text.Trim() == "") return; //沒有填寫日期不計算 if (txtDateEnd.Text.Trim() == "") return; //沒有填寫日期不計算 string strDate = "2000/01/01"; string strDateStart = txtDateStart.Text; //使用者填入的日期 string strDateEnd = txtDateEnd.Text; //使用者填入的日期 string strTimeStart = drpHourStart.SelectedItem.Text + ":" + drpMinuteStart.SelectedItem.Text + ":00"; //使用者選擇的時間 string strTimeEnd = drpHourEnd.SelectedItem.Text + ":" + drpMinuteEnd.SelectedItem.Text + ":00"; //使用者選擇的時間 //上下班時間設定、午休時間設定 TimeSpan 上班時間 = new TimeSpan(DateTime.Parse(strDate + " 08:30:00").Ticks); TimeSpan 下班時間 = new TimeSpan(DateTime.Parse(strDate + " 17:30:00").Ticks); TimeSpan 午休開始 = new TimeSpan(DateTime.Parse(strDate + " 12:00:00").Ticks); TimeSpan 午休結束 = new TimeSpan(DateTime.Parse(strDate + " 13:00:00").Ticks); TimeSpan t1 = new TimeSpan(DateTime.Parse(strDateStart + " " + strTimeStart).Ticks); TimeSpan t2 = new TimeSpan(DateTime.Parse(strDateEnd + " " + strTimeEnd).Ticks); double ts = t2.Subtract(t1).TotalHours; if (ts < 0) return; //起迄時間錯誤不計算 TimeSpan date1 = new TimeSpan(DateTime.Parse(txtDateStart.Text).Ticks); TimeSpan date2 = new TimeSpan(DateTime.Parse(txtDateEnd.Text).Ticks); double dates = date2.Subtract(date1).TotalDays; //跨越天數 double 請假時數 = 0; for (int i = 0; i <= dates; i++) { TimeSpan 請假開始 = new TimeSpan(DateTime.Parse(strDate + " " + strTimeStart).Ticks); Boolean 上午開始 = 午休開始.Subtract(請假開始).TotalHours >= 0 ? true : false; Boolean 下午開始 = 午休結束.Subtract(請假開始).TotalHours <= 0 ? true : false; TimeSpan 請假結束 = new TimeSpan(DateTime.Parse(strDate + " " + strTimeEnd).Ticks); Boolean 上午結束 = 午休開始.Subtract(請假結束).TotalHours >= 0 ? true : false; Boolean 下午結束 = 午休結束.Subtract(請假結束).TotalHours <= 0 ? true : false; if (i == 0 && i == dates) //同一天 { //請上午,請下午 if (上午開始 && 上午結束 || 下午開始 && 下午結束) { 請假時數 += 請假結束.Subtract(請假開始).TotalHours; } else //請整天,跨越午休 { if (上午開始) 請假時數 += 午休開始.Subtract(請假開始).TotalHours; if (下午結束) 請假時數 += 請假結束.Subtract(午休結束).TotalHours; } } else if (i == 0 && i < dates) //第一天 { if (上午開始) 請假時數 += 午休開始.Subtract(請假開始).TotalHours + 4.5; if (下午開始) 請假時數 += 下班時間.Subtract(請假開始).TotalHours; } else if (i != 0 && i == dates) //最後一天 { if (上午結束) 請假時數 += 請假結束.Subtract(上班時間).TotalHours; else 請假時數 += 3.5; if (下午結束) 請假時數 += 請假結束.Subtract(午休結束).TotalHours; } else { 請假時數 += 8; } } txt總時數.Text = 請假時數.ToString(); txt總天數.Text = (請假時數 / 8).ToString(); //txt總天數.Text = Math.Floor(請假時數 / 8).ToString(); //無條件捨去 }
- May 20 Fri 2011 14:30
ASP.NET C# 讓使用者在網頁編輯樹狀結構
這個功能,說真的我不知道用在哪裡好,
不過老闆想要這樣的頁面,所以我就做了,
上網搜尋了一下,關於在網頁製作這個功能的資訊實在不多(可能是太簡單了,所以沒人分享),
大部分都是WindowForm上操作TreeView的文章,
所以我就分享一下在網頁上操作TreeView的程式碼吧!
- May 17 Tue 2011 09:59
我的第一個 C# ASP.NET
字串的宣告
string 變數 = string.Empty;
string 變數 = "abcdefg";
Session內容的取出
- May 16 Mon 2011 16:03
C#,int轉成string,string轉成int
1,int轉成string
用toString
或者Convert.toString()如下
例如:
- May 05 Thu 2011 17:28
使用RegularExpressionValidator來驗證多種日期格式
原本想使用RegularExpressionValidator來驗證日期格式
可是發現有一種更簡易的方法:
使用CompareValidator驗證元件
- Mar 11 Fri 2011 14:54
ASP.NET GridView RowUpdating 時 取得TextBox (Update前的處理)
Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating 'Find Controller Dim tb As TextBox = CType(GridView1.Rows(e.RowIndex).FindControl("TextBox1"), TextBox) If tb.Text = "" Then ...略... End Sub
- Mar 11 Fri 2011 14:46
ASP.NET TextBox按下Enter時預設的Button (Default Button)
目的:當畫面中有很多TextBox時,每個TextBox又有各自負責的Button,想要讓使用者輸入完畢按下Enter後,就能夠觸發該Button Click的動作。
方法:
<asp:Panel ID="Panel2" runat="server" DefaultButton="Button1"> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" Text="Submit" /> </asp:Panel>
- Mar 11 Fri 2011 14:30
ASP.NET Page.ClientScript 屬性
- Mar 11 Fri 2011 14:01
[轉] ASP.NET GridView Event
很不錯的介紹:GridView Event
了解GridView事件(Event)
GridView實在是非常好入門的控制項,讓我們可以知一解百,也就是說,你如果能完全了解GridView控制項,那其他類似的資料處理控制項你也差不多學完了,所以對GridView的投資是非常值得。
除了要好好了解拉放之間滑鼠及Vistual Studio帶來的便利,我覺的學好GridView 事件,對學習ASP.NET有更重大的意義,一般控制項了不起就是Page_Load、Click、Change、Select這幾類,但GridView不同,因為它能幫你做好多好多事,所以他的事件就複雜很多,複雜不代表難。
- Mar 11 Fri 2011 13:35
[轉] ASP.NET GridView的常用操作
- Mar 03 Thu 2011 14:12
ASP.NET 開啟已存在的Excel文件填入資料 (使用Microsoft.Office.Interop.Excel+IIS)
稍作修正,之前寫的有一些錯誤,Excel在Server並不會關閉,而且只能在Server執行,Client並不會出現Excel應用程式視窗,視窗反而出現在Server端。
Server端Excel不會關閉(在[工作管理員]→[處理程序]內),可以參考此文章。
這次使用內建的excel.dll來製作excel功能,如下:
Dim xlApp As Application Dim xlBook As Workbook Dim xlSheet As Worksheet Dim xlRange As Range On Error Resume Next xlApp = GetObject(, "Excel.Application") If Err.Number() <> 0 Then Err.Clear() xlApp = CreateObject("Excel.Application") If Err.Number() <> 0 Then errMsg.Text = Err.Description Return End If End If xlBook = xlApp.Workbooks.Open(Server.MapPath("~\報表範本.xls")) xlApp.DisplayAlerts = False xlApp.Visible = True xlBook.Activate() '設為做用中的目標 xlBook.Parent.Windows(1).Visible = True xlSheet = xlBook.Worksheets(1) '選取第1個sheet xlSheet.Activate() '設此sheet為做用中的目標 '填入資料,有三種方法 xlSheet.Range("A1").Value = "Value" '把資料填到A1的格子內 xlSheet.Range("A1","A2").Value = "Value" '把資料填到A1~A2的格子內 xlSheet.Range(xlSheet.Cells(1,1), xlSheet.Cells(2,1)).Value = "Value" '把資料填到A1~A2的格子內,Cells(row,column),A=1,B=2,C=3,D=4... xlApp.Run("報表範本.xls" & "!Caculater") xlBook.SaveAs("要另存的檔名.xls") xlBook.Close() System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp) '關閉Excel xlApp = Nothing xlBook = Nothing xlSheet = Nothing xlRange = Nothing
- Feb 25 Fri 2011 15:18
ASP.NET DataTable 轉成 HTML 跟 GridView
當GridView的資料是在程式裡面動態產生的時候,HtmlEncode屬性就無法在程式碼內設定,為了克服資料想顯示Htmlcode,所以將資料改用html顯示是一個辦法。
但是這樣就無法再做其他GridView相關的處理,所以我就去搜尋了,如何實現GridView的資料來源是動態產生,還可以設定BoundField屬性。
如下:
- Feb 11 Fri 2011 11:31
GridView 控制項 - 無資料時顯示標題列
最近突然需要這個功能,上google搜尋找到此篇文章:擴展 GridView 控制項 - 無資料時顯示標題列,是來自點部落,算蠻有名的.net部落格。
可是一邊看文章,心裡就OS覺得,只是要顯示標題列有必要搞的這麼麻煩嗎?(我承認我懶...程度又很低落...)
所以自己想了另一個非常沒有技術的方法實現這個功能,請往下看... :D
'首先將查詢出來的table塞到date table
- Jan 25 Tue 2011 09:14
ASP.Net 事件發生先後順序