發表文章

目前顯示的是 2009的文章

在.cs檔裡動態註冊JavaScript和CSS

//註冊CSS string stylestr = "<style type='text/css'>"; stylestr += ".smallstyle"; stylestr += "{"; stylestr += "font-size: 12px;"; stylestr += "font-family: '新細明體';"; stylestr += "color: Gray;"; stylestr += "}"; stylestr += ".bigbodystyle"; stylestr += "{"; stylestr += "font-size: 20px;"; stylestr += "font-family: '新細明體';"; stylestr += "}"; stylestr += "</style>"; Page.RegisterClientScriptBlock("HideBlock", stylestr);

SQL函數 查詢SQL資料欄位相符的字串

CHARINDEX ( expression1 ,expression2 [ , start_location ] ) 搜尋 expression2 中的 expression1 ,並在找到時傳回它的開始位置。搜尋會在 start_location 開始。 引數 expression1 這是字元 expression ,其中包含要尋找的順序。 expression1 限制為 8000 個字元。 expression2 這是要搜尋的字元運算式。 start_location 這是搜尋開始的整數或 bigint 運算式。如果未指定 start_location ,或者它是負數或 0,搜尋就會從 expression2 開頭開始。

HttpModule與HttpHandler的區別整理

圖片
原本我們在舊版的作業系統上(如XP,Server2003)要讓每個使用者訪問網頁時先進行驗證,判斷是否由外部連結或者是種種的驗證可以直接使用ISAPI來進行(使用C撰寫),但是近年來作業系統的版本已經到了Server2008+,IIS的版本也由原本的IIS6變成了IIS7,因此有些主機在ISAPI的運行變得異常或者是不能執行(但這個問題經過證實是64位元作業系統的問題,變更IIS設定就可以解決這個問題),因此在資料過濾的部份我們除了可以使用ISAPI可以幫我們進行資料過濾,也可運用微軟提供的HttpModule與HttpHandler來處理相同的問題,下面就對者兩者的差異進行說明。

showModalDialog 跳出後背景灰階的語法

圖片
function GridView_OpenDialog2(url, widthpx, heightpx, imgurl) { var dialogcenter = ";dialogTop:" + ((window.screen.height / 2) - (heightpx.replace("px", "") / 2)) + " ; dialogLeft:" + ((window.screen.width / 2) - (widthpx.replace("px", "") / 2)) + ";"; if (imgurl) { var mask = document.createElement("DIV"); mask.id = "GridView_mask"; var style = ""; style += "background-color:white;"; style += "width:100%; height:100%;"; style += "position:fixed; top:0; left:0; zindex:1000;"; style += "filter:alpha(opacity=70); opacity:0.7; zoom:1;-moz-opacity:0.7;"; mask.style.cssText = style; //=======下面這些只有IE支援不建議這樣使用 //mask.style.position = "fixed"; //mask.style.top = 0; //mask.style.left = 0; //mask.style.width = "100%";

Server2008上使用ReportViewer

在Server上面執行ReportViewer會出現找不到物件javascript的錯誤,只要在Web.config加上兩段語法就可以正常執行了

ASP.NET Component 內嵌資源

圖片
在自己寫元件的時候常常需要將一些javascript, 圖片嵌入dll當中,下面兩個網站的教學讓我們可以對於元件開發更快上手 http://support.microsoft.com/kb/910442/zh-tw http://blog.csdn.net/webwalker/archive/2007/09/21/1795376.aspx 另外關於將自己寫好的元件加上ICON圖示也是製作專屬於自己元件的重要過程,下面圖式齒輪狀的是一開始沒有給icon的圖示 http://www.dotblogs.com.tw/jeff377/archive/2008/10/08/5624.aspx http://topic.csdn.net/t/20050222/20/3799032.html

GridView裡面使用Button事件

圖片
我用了微軟的GridView來達成下圖的畫面,在以前使用的習慣是使用Client端的事件再配合javascript來完成資料更新,因此沒有嘗試過Server的事件,這次我直接在ItemTemplate中直接放入一個Button(下圖藍框處)並在RowDateBound中動態加上事件如下,

ReportViewer9.0版 使用前說明

開發前要先安裝Microsoft ReportViewer9.0版(原Visual Studio 2005為8.0版),以下為Download網址 http://www.microsoft.com/downloads/details.aspx?familyID=cc96c246-61e5-4d9e-bb5f-416d75a1b9ef&DisplayLang=en

C# 取得當月份天數

DateTime.DaysInMonth(DateTime.Today.Year,DateTime.Today.Month)

ASP.NET ReportViewr使用方式

string strConnection = ConfigurationManager.ConnectionStrings["ConnectionString2"].ToString(); DataSet myDs = new Report1(); using (SqlConnection conn = new SqlConnection(strConnection)) { conn.Open(); string strSQL = "select * from XXXX"; using (SqlCommand cmd = new SqlCommand(strSQL, conn)) { SqlDataReader myDr = cmd.ExecuteReader(); myDs.Tables["statlist"].Load(myDr); myDr.Close(); myDr.Dispose(); } } //將ReportViewer1的DataSources集合清除 ReportViewer1.LocalReport.DataSources.Clear(); //匯出檔案名稱 ReportViewer1.LocalReport.DisplayName = "XXX彙總表"; //為查看器提供本地報表數據 ReportViewer1.LocalReport.ReportPath = Server.MapPath("Report1.rdlc"); ReportViewer1.LocalReport.DataSources.Add( new Microsoft.Reporting.WebForms.ReportDataSource("Report1_statlist", myDs.Tables["statlist"])); //參數 //ReportParameter param = new ReportParameter("Title", "嗚嗚"); //ReportPara

ASP.NET動態產生控制項&動態讀取控制項

//動態產生控制項 txt.ID = string.Format("txt{0}", rs["ordetailid"].ToString()); txt.Text = rs["amount"].ToString(); column.Controls.Add(txt); //動態讀取控制項 Page.Request.Form[string.Format("DataList1_statamount$txt{0}", strAmount)].ToString());

win2003 ASP上傳大小限制(轉貼)

問題:WIN2003無法上傳較大的文件「Request 對像 錯誤 \』 ASP 0104 : 80004005 \』 解決方案: 1.先打開IIS管理器: 2.關閉iis admin service服務 找到windows\\system32\\inesrv\\下的metabase.xml, 打開,找到ASPMaxRequestEntityAllowed 把他修改為需要的值, 默認為204800,即200K,把它修改為20480000(20M)。 然後重啟iis admin service服務   二、解決 ASP 無組件上傳錯誤:Request 對像 錯誤 ' ASP   0104   :   80004005 ' 不許操作---2003 server

抓取QueryString上字串(參數)

//假設URL參數字串為 //index.aspx?id=aaa&email=hh@gmail.com&id2=bbb&email=cc@hotmail.com for (int i = 0; i < Page.Request.QueryString.Count; i++) { if (Page.Request.QueryString.AllKeys.GetValue(i).ToString().StartsWith("id")) { rowid = Page.Request.QueryString.AllKeys.GetValue(i).ToString().Replace("id", ""); if (strParameter == "") { if (!string.IsNullOrEmpty(rowid)) strIndex += rowid; strParameter = " ( id=" + string.Format("@id{0} ", rowid) + " and email=" + string.Format("@email{0} ", rowid) + " ) "; } else { if (!string.IsNullOrEmpty(rowid)) strIndex += "," + rowid; strParameter += " OR ( id=" + string.Format("@id{0} ", rowid) + " and email=" + string.Format("@email{0} ", rowid) + " ) "; } } }

Java 取得常用的環境變數

//取得當前路徑的方法 String curDir = System.getProperty("user.dir"); 另外下面是一些常用的環境變數

同時載入SQL2000和SQL2005的JDBC發生錯誤

當您載入 SQL Server 2000 驅動程式 JDBC 的 SQL Server 2005 的驅動程式 JDBC 的在同一個應用程式中,您嘗試連線到 SQL Server 2005 資料庫,再執行查詢,您可能會收到錯誤訊息 如果要解決這個問題而定,請依照下列步驟執行: 

Java 存取 MSSQL2005 資料庫

java 連接 sql 2005 的方法: 1。到微軟官方網站下載2005的jdbc並解壓,獲得文件sqljdbc.jar Microsoft SQL Server 2005 JDBC Driver 1.2 2。複製文件sqljdbc.jar到jdk目錄\jdk1.5\jre\lib\ext下。 3。開始-〉所有程式-〉sql server 2005-〉組態工具-〉SQL Server Configuration Manager。啟動sql 2005服務。點選 sql server2005網絡組態,並選中」MSSQLserver的協定,啟用tcp/ip協定。

使用JavaScript取得網址列資訊

圖片
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write ( unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E" ) );

Visual Studio 2005使用AJAX 出現Sys 未被定義

在Visual Studio 2008裡使用AJAX並不會有這樣的問題,但是Visual Studio 2005就會出現異常的情況,而此種異常狀況主要的原因是在web.config裡面必須加入下面的語法即可解決 <system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules> <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </modules> <handlers> <remove name="WebServiceHandlerFactory-Integrated"/> <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integr

ASP Request 抓值

Request.Servervariables("PATH_INFO") ==> '取得目前頁面路徑,如:/Exam/main.asp Request.Servervariables("Script_Name") ==> '取得目前頁面路徑,如:/Exam/main.asp Request.Servervariables("PATH_TRANSLATED") ==> '取得實體路徑,如:D:/sss/exa/main.asp Request.Servervariables("SERVER_NAME") ==> '取得Server主機名稱 Request.Servervariables("SERVER_PORT") ==> '取得目前網頁通訊Port Resqest.ServerVariables("Http_Accept_Language") ==> 'IE瀏覽器語系,如en-US,zh-tw;q=0.5

CMD下FTP使用命令全集

FTP命令是Internet用戶使用最頻繁的命令之一,不論是在DOS還是UNIX操作系統下使用FTP,都會遇到大量的FTP內部命令。熟悉並靈活應用FTP的內部命令,可以大大方便使用者,並收到事半功倍之效。 FTP的命令行格式為: ftp -v -d -i -n -g [主機名] -v 顯示遠程服務器的所有響應信息; -n 限制ftp的自動登錄,即不使用; .n etrc文件; -d 使用調試方式; -g 取消全局文件名。

取消Vista & Server 2008安裝軟體提示

使用 Windows Vista 其中最令人不習慣的事,就是 Vista 在使用者做一些動作時,經常會跳出警告或要求確認的畫面,雖然這是為了系統安全,不過還是令人感到非的煩, 底下提供如何從系統中移除使用者帳戶控制(UAC)

Server 2008 無線網路無法啟用

請試想下列案例。 您有的電腦,正在執行 Windows Server 2008 上,且,在有安裝無線網路介面卡。 未安裝無線 LAN 服務功能。 在這種情況下,您可能會遇到下列徵狀: 在 [ 網路連線] 組態] 對話方塊中,無線網路連線的狀態是 「 停用 」。 如果您無線網路連線圖示上按一下滑鼠右鍵,然後按一下 [ 啟用 ,[ 無線網路連線 對話 」 方塊就會出現,並表示已啟用連線。 不過,在 [ 網路連線 ] 對話方塊中,無線網路連線仍然似乎停用。 請注意 在 [裝置管理員] 中,無線介面卡驅動程式的狀態為啟用"。

javascript比較日期大小

將兩個物件傳入下面的函數就可得到時間的大小,可視情況自行修改 function checkDate(obj1, obj2) { var d1 = obj1.value; var d2 = obj2.value; //d1 = d1.replace(/-/g, "/"); //d2 = d2.replace(/-/g, "/"); //======str.repalce(/-/g, "/"); g 代表替換str字串中全部"-"為"/" d1 = new Date(d1); d2 = new Date(d2); var times = d2.getTime() - d1.getTime(); var days = parseInt(times / (1000 * 60 * 60 * 24)); //return (days < 0) ? true : false; if (days < 0) { //alert("日期欄位2大於日期欄位1"); return true; } else { return false; } }

Access 使用 like 語法造成 記憶體不足

目前找到的原因:大多是使用like語法,所造成的。 下面紅色字體部份改成藍色字體部份就可以解決這樣的問題 strSql = "select * from Info where name like '%" + txtSearch.Text + "%' or note like '%" + txtSearch.Text + "%' order by autocount desc"; strSql = "select * from Info where InStr(1,LCase(name),LCase(\'" + txtSearch.Text + "\'),0) <> 0 or InStr(1,LCase(note),LCase(\'" + txtSearch.Text + "\'),0) <> 0 order by autocount desc";

LCID地區代碼

這類語系檔大多數都能用一般的文字編輯器開啟並編輯,通常為 File=xxxx 的形式,而要修改的即為 = 後面的文字,但這一類需要注意的是有沒有語系編碼的設置項目例:Code Page=936 說明: 字頁碼:437(英文);936(簡體);950(繁體);932(日文);949(韓文) 或是 LCID 碼:1033(英文);2052(簡體);1028(繁體);1041(日文);1042(韓文) 及 charset 編碼方式:136(BIG5);134(GB);128(Shift-JIS)

關閉 Server 2003的關機詢問

在開始->執行,輸入gpedit.msc然後按下Enter。 接著找電腦設定>系統管理範本>系統,會看到一個叫做顯示關機事件追蹤器,點選 他兩下後選擇已停用,然後按下確定就完成關閉的所有步驟了。 PS.Server2008的方法同上

無法存取某某資料夾,存取被拒(轉貼)

圖片
「 無法存取某某資料夾,存取被拒 」的問題。 假設資料夾如下圖的一個情況:

取得Html下拉式選單物件的內容

document.getElementById("drp開盤價").options[0].text; document.getElementById("drp開盤價").options[1].text; document.getElementById("drp開盤價").options[2].text; document.getElementById("drp開盤價").options[3].text;

利用同一條Connection連線執行多次Command命令

using (myConn = new SqlConnection(m_strConnectionString)) { myConn.Open(); using (SqlCommand myCommand1 = new SqlCommand(strSql, myConn)) { using (SqlDataAdapter myAdp = new SqlDataAdapter(myCommand1)) { ds = new DataSet(); myAdp.Fill(ds, "RichMoney"); this.GridView1.DataSource = ds; this.GridView1.DataBind(); //第一次運用 strSql = " select * from first "; myCommand1.CommandText = strSql; ds = new DataSet(); myAdp.Fill(ds, "RichMoney"); //第二次運用 strSql = " select * from second "; myCommand1.CommandText = strSql; ds1 = new DataSet(); myAdp.Fill(ds1, "RichMoney"); } } }

Visual Studio 2008 程式開發伺服器通訊埠與IE不一致

執行WebDebug的時候,突然頁面顯示著「網頁無法顯示」的頁面,之前一切正常,經過網路上查證,發現為NOD32防毒軟體的關係 依 進入NOD32的進階設定(F5),網址過濾,HTTP,瀏覽器,會看到一個列表你的devenv.exe應該在其中,雙擊前面的勾 (相當於去掉選中狀態),確定退出,停止一切運行的ASP.NET Development Server,在VS中打開並重新編譯運行你的Web程序」

記憶密碼

密碼型態的文字方塊要記憶密碼時,直接使用.Text屬性並無法顯示必須使用下面的方法 txtPwd.Attributes.Add(" value ", Request.Cookies["Member"]["Pwd"].ToString());

SQL 找出最高學歷問題

圖片
情境說明 在實際應用中,我們常面臨需要找出某個人的最高學歷、最後工作經驗等問題(如下圖),這些涉及到一個人對應多筆有先後順序的明細資料,你可能會常看到先撈出所有員工資料,然後在程式端進行迴圈的篩選,但若資料量過大,這種方式可能面臨效能問題,因此更好的解決方法是在資料過篩選完必要的結果後,再將其拋給程式處理。 這篇文章我要記錄一下兩個常用的寫法,假設我們有三張資料表 #TempEmployee(員工資料)、#TempEduType(學位類型)、#TempEduSchool(員工學歷),建立測試資料表可以參考本文最下方的語法。 我們常見的子查詢的寫法,但缺點是一次只能顯示一個欄位,若要同時顯示最高學歷和其學校名稱,則必須寫兩筆子查詢。 Select emp.*, ( Select Top 1 b.[Type] From #TempEduSchool a Inner Join #TempEduType b on b.[Code]=a.[Type] Where emp.EmpNo=a.EmpNo Order by b.[Level] Desc ) as [MaxType], ( Select Top 1 a.[SchoolName] From #TempEduSchool a Inner Join #TempEduType b on b.[Code]=a.[Type] Where emp.EmpNo=a.EmpNo Order by b.[Level] Desc ) as [SchoolName] From #TempEmployee emp 使用 Outer Apply(效果類似 Left Join) or Cross Apply(效果類似 Inner Join) 的方式,詳細可參考 SQL SERVER 2005 中 Apply的用法 。 Select * From #TempEmployee emp Outer Apply ( Select Top 1 b.[Type] as [MaxType], a.[SchoolName] From #TempEduSchool a Inner Join #TempEduType b on b.[Code]=a.[Type] Where em

使用NetBeans 將 MySQL 加入 套件中

圖片
先前講的要使用MySQL必須載入驅動,並且將執行檔加入Path,但要是要發佈到客戶端,每台要加入Path大概會瘋掉,下面就是一些加入 .jar 檔的步驟 (1)新增一個新的專案

CuteFtp 備份

1.找到sm.dat檔 位置:Documents and Settings\ username \Application Data\GlobalSCAPE\CuteFTP\x.x\sm.dat username:系統使用者名稱 x.x:CuteFtp版本 2.copy起來就是囉… 3.如果要還原,就用內建的匯入,或者,把sm.dat檔放到step 1的目錄即可。

Java 無法連接MySQL

1.到http://dev.mysql.com/downloads/connector/j/5.0.html下載connector。 2.解壓縮後,將mysql-connector-java-5.0.4-bin.jar複製到jre安裝目錄下的\lib\ext 例如:C:\Program Files\Java\jre1.5.0_09\lib\ext 3. set classpath=.;C:\Program Files\Java\jre1.5.0_09\lib\ext\mysql-connector-java-5.0.4-bin.jar 4.程式碼部分 String jdbc = "com.mysql.jdbc.Driver"; // 使用的 driver String url = "jdbc:mysql://localhost/資料庫名稱"; // 連結路徑 String user = "帳號"; String pass = "密碼"; Class.forName(jdbc); Connection con = DriverManager.getConnection(url,user,pass); 有件事要注意:電腦中同時有jdk及jre,set classpath及connector複製的路徑,當時設定jdk中的jre路徑, 仍沒辦法使用,改成jre才可使用。 本文引用 http://blog.yam.com/carl44/article/7640643

JSP 存取 MSSQL2000 資料庫

1.首先到微軟的網站下載 SQL Server 2000 Driver for JDBC Service Pack 3 在上個網頁,可以下載 mssqlserver.tar 及 setup.exe 其中一項。 .tar有二層的壓縮,所以要解壓二次。

SQL 列出所有重複的資料

圖片
情境說明 假設有一個員工的資料表 #Employee,其中有一個欄位 EmpName 記錄著員工的姓名,我們希望能夠查出在這張表內有哪些人的姓名是相同的,如下圖數據,我們期望可以找出 2 筆 Lawrence,有底下幾種常見的寫法。 若只是單純想找出,不重複的 EmpName,直接 Distinct 即可。 Select Distinct EmpName From #Employee 使用 Group By 來找出 EmpName 超過一筆以上的資料,並顯示實際的資料筆數。 Select EmpName, Count(EmpName) as RecordCount From #Employee Group By EmpName Having count(EmpName) > 1 查出單位內所有重複姓名的人完整資料表數據 Select * From #Employee Where EmpName in (Select EmpName From #Employee Group By EmpName Having count(EmpName) > 1 ) -- or Select * From #Employee main Where (Select Count(EmpName) From #Employee sub where main.EmpName = sub.EmpName ) >1 建立本文範例資料表 相關語法如下參考,使用完畢記得刪除不要的測試資料表喔。 -- 建立測試資料表 CREATE TABLE #Employee ( EmpNo varchar(10), EmpName nvarchar(20)) -- 建立測試資料 Insert Into #Employee values('001', N'Lawrence') Insert Into #Employee values('002', N'Olivier') Insert Into #Employee values('003', N'Lawrence') Insert Into #Employee values('004', N'Lawrence

GridView History.back()後分頁跑回第一頁

資料控制項對於返回上一頁後都有無法紀錄先前的分頁頁數的問題,本來想要放棄改用ASP的方式自己畫表格,但是這樣就浪費的ASP.NET所提供控制項的目的了,找了好久終於在網路上看到人家的解決方式,解決後又有一些小問題,在IE6.0的時候會出現一個DIV來記錄當前分頁,於是再上方出現一個空格,在這裡運用CSS來處理掉即可。

讀取硬碟資訊(調用API)

雖然使用WMI來讀取系統軟硬體各項資訊非常方便,但不知何故,使用WMI讀取Windows2000做業系統的硬碟資訊就是會出錯,因此必須改成調用API的方式來實作。 呼叫方式 HardDiskInfo hdd = AtapiDevice.GetHddInfo(0); // 第一個硬碟 MessageBox.Show("Module Number:" + hdd.ModuleNumber); MessageBox.Show("Serial Number:" + hdd.SerialNumber); MessageBox.Show("Firmware:" + hdd.Firmware); MessageBox.Show("Capacity:" + hdd.Capacity + "M"); 參考網址 如何得到硬盤序列號[C#] 本文範例 : HardInfo.rar

使用泛型處理常式(ashx)存取Session

要寫入Session必須先加入介面IRequiresSessionState,並且必須引用命名空間 using System.Web.SessionState; public class File_WebHandler : IHttpHandler, IRequiresSessionState  //IReadOnlySessionState 只可讀取Session { public void ProcessRequest(HttpContext context) { context.Session["Write"] = "寫入Session"; //若沒有加入介面將會發生錯誤 } }

在IE中嵌入WinformControl時安全性問題

圖片
使用Winform控制項來撰寫並嵌入在網頁中,用法就像之前的ActiveX一樣,但有幾點要注意,如果要使用有安全性的方法,如IO,如果沒有開啟 NET的權限的話,將會跳出警告視窗,此方法最大的缺點在於,使用者一定要安裝封裝檔才可正常使用,且只有IE瀏覽器有作用

JavaScript 跳出新視窗在螢幕正中間的方法

使用showModalDialog開啟新視窗,通常必須指定距離左邊和上面高度來設定初始位置,但若遇到不同解析度的瀏覽器的話,位置通常會跑掉,因此就必須使用JavaScript的window.screen來達成,以下面紅色字體部分來解釋

透過jQuery處理表單驗證

想要對表單進行驗證只需要使用jQuery減少許多語法,使用前必須先加入jQuery

Firefox內使用style.display="block"無作用的問題

IE顯示隱藏區的Javascript語法為document.all.object.style.display="block"但此用法在Firefox並不適用 function exeInsert() { //Firefox使用空白顯示有別於IE的block document.getElementById("divInsert").style.display=""; document.getElementById("divEdit").style.display="none"; document.getElementById("txtInsert").value = ""; document.getElementById("txtSearch").value = ""; //document.all.divInsert.style.display="block"; //document.all.divEdit.style.display="none"; }

取得一次下多筆SQL指令的影響筆數

//使用委派事件來取得多筆指令受影響列 private void button5_Click(object sender, EventArgs e) { using (SqlConnection conn = new SqlConnection(strConnStr)) { conn.Open(); using (SqlCommand cmd = new SqlCommand()) { //StatementCompleted事件只適用於SqlClient cmd.StatementCompleted += new StatementCompletedEventHandler(cmd_StatementCompleted); cmd.CommandType = CommandType.Text; cmd.Connection = conn; cmd.CommandText = "Insert into Test.dbo.預存程序 (No1) Values ('HHH');" + "Update Test.dbo.預存程序 Set No1 = 'NA' Where No1='NA' or No1='HHH'"; cmd.ExecuteNonQuery(); } } } private void cmd_StatementCompleted(object sender, StatementCompletedEventArgs e) { MessageBox.Show("影響資料筆數:" + e.RecordCount.ToString()); }

Firefox使用showModalDialog回傳時觸發事件

此範例因為使用ASP.NET的MastPage的關係,所以導致按鈕的ID與平常不一樣,須特別注意。 主頁面 window.showModalDialog('ContentInfo.aspx?class=edit&sno='+ e ,self,feature); //執行回傳按鈕事件 if(document.all) { //Name document.getElementById("ctl00$ContentPlaceHolder1$btnReload").click(); } else { //Firefox 專用 var evt = document.createEvent("MouseEvents"); evt.initEvent("click", true, true); document.getElementById("ctl00_ContentPlaceHolder1_btnReload").dispatchEvent(evt); } 主頁面呼叫的按鈕事件 <asp:Button ID="btnReload" runat="server" Text="" onclick="btnReload_Click" />

Dynamic Change Web Services IP Address

使用WebService來進行資料庫存取,如果遇到客戶資料庫主機更改位址的情況,在無從新發行的條件下,可在先前再程式內撰寫自動抓取新的資料庫位址 using WebServiceNameSpace; protected void Page_Load(object sender, EventArgs e) { ServiceName Sn = new ServiceName(); Sn.Url = "http://127.0.0.1/WebService/Class.asmx" Sn.Discover(); //更新位址 } 再搭配Web.Config即可在發行後克服客戶主機位址改變的問題

另用CSS 來達成 HTML文字自動截斷

//==HTML文字自動截斷... string divCSS = "width: 400px; text-overflow: ellipsis; overflow: hidden; white-space:nowrap;"; strbody += "<table width='100%' border='0' cellspacing='0' cellpadding='3'>"; while (!rs.Read()) {   strbody += "<tr>";   strbody += " <td width='4%'> </td>";   strbody += " <td width='4%' valign='top'><img src='../Images/icon-05.gif' /></td>";   strbody += " <td width='96%'><div style='" + divCSS + "'>" +rs["id"].ToString() + "</div></td>";   strbody += " <td width='4%'> </td>";   strbody += " </tr>";   rs.MoveNext(); } strbody += "</table>"

讀取硬碟序號、主機板序號、MAC位址(使用 WMI)

透過WMI,我們可以很方便的取得主機的各種資訊,下列舉例三種取得硬體資訊的方法,使用前必須先加入using System.Management;命名空間

SqlTransaction VS TransactionScope

新的事務處理架構不再與數據庫綁在一起,而是從代碼塊的角度,當在通過 new 語句實例化 TransactionScope 時,事務管理器將確定要參與哪個事務。一經確定,此範圍將始終參與該事務。 也就是說只要是代碼塊是可以被事務管理器所管理的,則允許該代碼塊範圍所參與的事務繼續。如果事務範圍中的代碼發生了異常,它所參與的事務將回滾。也只有 當應用程序完成它要在一個事務中執行的所有工作以後,您應當調用TransactionScope的Complete 方法,以通知事務管理器可以接受提交事務。如在代碼塊內未能調用此方法將中止該事務,也就是隱式的進行了Rollback。對 Dispose 方法的調用標誌著該事務範圍的結束。在調用此方法之後發生的異常不會影響該事務。

WebService 利用SOAP標頭來進行帳號密碼驗證

利用WebService來撰寫三層式架構的中間層是一個不錯的方法,但是 由於WebSerivce夠開放(資料庫存取直接暴露在網際網路上),這是微軟給予有心人士天大的恩賜,難免有一些安全性不足的缺點,在此可以利用 SOAP標頭來進行一些基本的安全防護,至少可以避免一些不會必要的攻擊。

ADO.NET 建立連線字串

程式中建立Dbconnection物件時,需提供連線字串、資料庫伺服器、名稱、安全性資訊,以下為連線字串的索引鍵。 Application Name :應用程式名稱,若沒有提供,預設為 .Net SqlClient Data Provider。 AttachDBFilename :也可寫為 extended properties 或 Initaial File Name,資料庫檔案的名稱,需包含完整路徑,可搭配 |DataDirectory| 來設定相對路徑。且資料庫不能是唯讀,不支援HTTP格式。

SQL 格式化字串

查詢結果格式化成特定字數,例如 查詢出 39 格式化成039 select right(cast(power(10,3) as varchar) + caseno ,3) as caseno from ofdoc 分析 1、select power(10,3)得到1000 2、select cast(1000+33 as varchar) 將1000轉換類型 3、select right(100039,3) 從右邊取3個字串得到039

利用OleDb讀取csv檔 字串問題

如果同一個資料欄位存在 數字 和 字串 的話,使用這個方法預設會判定為 數值 , 因此字串的資料就會消失不見,因此必須動態加入.ini,但是個人認為除非上傳的檔案都是同樣的相同的檔名就 可以這樣用,不然的話多人同時存取的時候可能會有lock的問題存在。 下面第二種方法使用資料流來讀取資料就沒有會將字串判定為數值的事情發生了

使用NET內建FTP出現中文檔名變亂碼

本來興高采烈的寫出NET 上傳下載的FTP後測試一切正常,結果在最後階段發現中文檔名出現亂碼(內文正常),查了老半天因為能力不足無法解決,最後只好靠不太會操作的 win32API終於解決了中文檔名的問題,不過也折騰了好幾天,真是要多加油了><。 NET 的FTP改成可以多個檔案上傳並且再最後一的檔案時關閉FTP連線使用ftpReq.KeepAlive = true; NET竟然沒有CLOSE 所以我也沒辦法測試這樣是否真的關閉,至於API部分,由於目前台灣時間是早上五點半,在不睡就要死了,所以改天有機會再寫了

WebService 使用多載

WebService預設是不能使用多載,但只要使用WebMethod的屬性MessageName給予不同的名稱並修改 WebServiceBinding (預設為BasicProfile1_1) ,就可以正常使用了。 [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.None)] public class ServiceUserAdmin : System.Web.Services.WebService { [WebMethod(MessageName = "SingleStrSQL")]//T-SQL查詢 [SoapHeader("soapSet")] public DataSet sqlDs(string strSQL) { if (ValidUser() == false) return myErrDs; try { return objSql.RunDataSet(strSQL); } catch (Exception ex) { throw ex; } } [WebMethod(MessageName = "IncoludConnectionString")]//T-SQL查詢變更資料庫連線 [SoapHeader("soapSet")] public DataSet sqlDs(string strSQL, string myConnectionString) { if (ValidUser() == false) return myErrDs; try { return objSql.RunDataSet(strSQL, myConnectionString); } catch (Exception ex) { throw ex; } } } 

計算執行時間程式執行時間

在寫程式的時候我們常常需要測量程式執行時間 .NET本身有提供所謂的效能計數器 精度非常高 但是使用上比較繁瑣 如果我們需要簡單的測量時間就好 對幾一千分之一秒的時間誤差沒有很刻求 那以下有兩種常用的方法可以簡單的計算目標程式所花費的執行時間

傳統發送mail VS 多執行緒發送mail

最近要寫一個電子報發送程式,由於可能同時點選多封郵件同時發送,通常會寫一個function呼叫執行,但可能會因為太多郵件造成超時,因此必須改成多執行緒發送郵件 傳統方式 //發送電子報 protected void SendMail() { try { MailAddress fromMail = new MailAddress("發信者信箱", "電子報標題", System.Text.Encoding.UTF8); MailAddress toMail = new MailAddress("收件者信箱", "收件者姓名"); MailMessage message = new MailMessage(fromMail, toMail); message.Subject = cobEName.Text; message.Body = "這裡是電子報發送的內容"; message.IsBodyHtml = true; message.Headers.Add("Disposition-Notification-To", "<回傳的mail>"); SmtpClient mailClient = new SmtpClient("SMTPServer"); mailClient.Credentials = new System.Net.NetworkCredential(txtLoginID.Text, txtLoginPwd.Text);//取得或設定驗證資料 //mailClient.EnableSsl = true;//指定 SmtpClient 是否使用 SSL 加密連線 //mailClient.Port = 587; mailClient.Send(message); } catch (Exception ex) { MessageBox.

正則表達式

正則表達式生來就為了處理字串而活,偏偏卻很難看的懂,例如以下舉例是在檢查E-mail帳號是否正確 var objMail = document.all.txtMail; var rege = /^[\w]+([._-]?[a-z0-9]+)*@[\w]+([._-]?[\w]+)*[\w]$/; if(objMail.length == 0 || rege.exec(objMail .value) == null) { alert('錯誤'); } else { alert('對了'); } 看不懂的話只要多測試,相信應該不會很困難 以下幾個網站可以提供參考 http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/RegularExpression.htm Java驗證格式 http://momokao.pixnet.net/blog/post/10307155 Java驗證格式 http://www.fboss.com/article.asp?id=683 JavaScript驗證格式 http://annyhunt.pixnet.net/blog/post/537799 JavaScript驗證格式 http://phone.idv.tw/cs2/forums/thread/424.aspx ASP.NET驗證格式

WinForm 背景圖

在winform表單上加上背景圖,並使Label透明,網路上流傳許多像label1.BackColor = System.Drawing.Color.Transparent這樣的語法,其實是不正確的,這樣只是會讓label標籤的背景跟winform表單 一樣的顏色。 在winform繪製背景圖主要有下列三種方式

使用API關閉特定應用程式

在此舉例開啟了一個IE瀏覽器視窗 //關閉IE [DllImport("user32.dll")] public static extern int FindWindow(string strclassName, string strWindowName); [DllImport("user32.dll")] private static extern int SendMessage( int hWnd,   // handle to destination window int Msg,    // message int wParam, // first message parameter int lParam // second message parameter ); const int WM_KEYDOWN = 0x0100; const int WM_KEYUP = 0x0101; const int WM_SYSCOMMAND = 0x0112; const int SC_CLOSE = 0xF060; private void closeIE() { //dd 為開啟網頁的Title int a = FindWindow("IEFrame", "dd - Microsoft Internet Explorer"); if (a > 0) { SendMessage(a, WM_SYSCOMMAND, SC_CLOSE, 0); } }