2012年12月6日 星期四

[IIS] 如何設定網址重新導向?

在網路世界中需要重新導頁早已不是新鮮事,
但之前沒摸過突然說要設還真的不知道從何下手才好。

現在的系統原本使用的網站都是由 http://www.test.com.tw/test/default.aspx (假設)作為進入系統的預設路徑,
但今天聽到一個需求希望能夠以後直接輸入 http://www.test.com.tw/ 就直接導到該頁面了!(就不想理會後面的哩哩扣扣...)

問了德高望重的前輩之後才得知是要在 IIS 中使用 HTTP 重新導向功能進行設定,
但找半天就是找不到這個功能在哪,
一查之下才之後原來根本還沒裝!!

OTZ

2012年11月26日 星期一

[C#] 透過程式壓縮資料夾為zip檔

主要找到的方法有 3 種:
1. 用微軟內建的方法
http://msdn.microsoft.com/zh-tw/library/ms404280.aspx
http://msdn.microsoft.com/zh-tw/library/system.io.compression.zipfile.aspx

首先要呼叫該方法的專案必須為.NET4.5 版本
接著加入參考 System.IO.Compression.FileSystem.dll 檔
並引用命名空間 System.IO.Compression 之後~

即可呼叫到該方法囉~頗方便的
因為我只要壓縮,所以只要用到下面 3 行就解決了

string startPath = @"C:\ProjectSamplePack";
 string zipPath = @"C:\result.zip";
 ZipFile.CreateFromDirectory(startPath, zipPath);


算是頗易用的一個方法。

[生活] 機車路考筆記

監理所貼心的小動畫:
http://www.komv.gov.tw/upload/flash/khh04.htm

http://snowprezom.pixnet.net/blog/post/1505817-196-%5B-%E6%88%91%E8%B7%9F%E4%BD%A0%E8%AA%AA%E5%96%94-%5D%E3%80%80%E5%AE%8C%E5%85%A8%E8%80%83%E6%A9%9F%E8%BB%8A%E6%8C%87%E5%8D%97
費用:125元
照片3張
體檢報告
照片3張

會騎車的人(?

應該就這樣吧...

有額外提供時間可以練習,但沒寫假日能不能練...
http://www.komv.gov.tw/cht/index.php?code=list&ids=131

考試時間:
http://www.komv.gov.tw/cht/index.php?code=list&ids=1312

2012年11月23日 星期五

[ASP.NET] 如何讓Gridview可以自動換行

看到有人為這個問題折騰半天,
啊不是咕狗一下就有了嗎 = ="""

參考網址如下:
http://www.dotblogs.com.tw/kazuya/archive/2011/09/22/37246.aspx

主要的一個重點就是再 PageLoad 的時候硬加入 Attribute 的屬性設定:

GridView1.Attributes.Add("style", 
"word-break:break-all;word-wrap:break-word");

接著再自己希望固定欄寬的欄位加入 Width 設定即可~


話說想想不曉得改加成 CSS 有沒有用...

試著實做了一下...

寫一個包涵上述語法的 css style 檔

.fixedWidth
{
   word-break: break-all;
   word-wrap: break-word;
}


然後加入 GridView 的 CssClass 即可:

CssClass="gridtable fixedWidth"

一樣可以達成相同的效果,
也不必再後台硬刻 code,靈活度較高~

2012年11月22日 星期四

[C#] 判斷輸入的是否為數字

HOW TO:判斷字串是否表示數值 (C# 程式設計手冊)
轉自 MSDN:http://msdn.microsoft.com/zh-tw/library/bb384043.aspx

int i = 0;
string s = "108";
bool result = int.TryParse(s, out i); //i now = 108

會想找這個方法主要是為了寫CONSOLE傳入參數用的
算是做點防呆吧!
避免輸入的不是數字造成程式出問題...
以下是自己用到的部份CODE:

int days = default(int);
if (int.TryParse(args[0], out days))
{
    days = Convert.ToInt32(funcs.GetSystemSettings("DUE_DAY"));
    projects = funcs.GetList(days.ToString());
}

用 TryParse 這個方法就可以很輕易的判斷輸入是否合法囉~
善用現有的工具真的很重要...OTZ

2012年11月19日 星期一

[C#] 修改資料夾底下所有檔案權限

進行 IO 讀寫改檔的時候很容易遇到因為有檔案權限的問題,
造成一些程式上的衝突錯誤,
這時候有沒有一個能夠自由更改檔案權限的方法就很重要了~


2012年11月12日 星期一

[C#] 複製資料夾檔案&重新命名檔案

寫了一小段時間的複製實體檔案 code,
缺點是寫的蠻硬的...
路徑規則是固定死得就那樣,
不知道還能怎樣改會比較好...

2012年10月31日 星期三

在Visual studio中顯示行號

有鑑於我又忘了再哪邊設定....

還好微軟很貼心

http://msdn.microsoft.com/zh-tw/library/ms165340(v=vs.80).aspx

步驟如下:


  1. 在 [工具] 功能表中選取 [選項]。
  2. 在 [文字編輯器] 資料夾中,選擇 [所有語言] 子資料夾內之 [一般] 選項,將此選項設定為全域性。
    - 或 -
    在您用來進行程式設計的語言子資料夾內選擇 [一般] 選項。
  3. 在 [ 顯示] 下,選取 [ 行號]。


2012年8月13日 星期一

[C#] 建立文件夾與檢查資料夾是否存在

這次是... 需要根據使用者的輸入在電腦本機端建立實體資料夾,

做法如下:

2012年7月30日 星期一

[轉貼]版本控管 Commit 需要注意的事項以 dotNet 與 SVN 為例

http://ithelp.ithome.com.tw/question/10077881

DotNetNuke簡介


DotNetNuke 是微軟 ASP.NET 技術平台的開放原始碼 Web 應用程式,具有良好的擴充性,極佳的穩定可靠度,同時也具有完備的安全性控管機制。它是採用以模組為基礎的開發模式,每一個模組都是一個滿足特定業務需求的獨立單元。DotNetNuke 本身已內建了許多常見的模組,例如訊息公告 (Announcements)、電子報 (Blog)、活動行事曆 (Events)、商品展示 (Store)、文件管理 (Document)、常見問題 (FAQs)、實用連結 (Links)、網站搜尋 (Search)、線上編輯 (Text/Html),以及會員管理 (User Account) 等數十種預設模組,網路上則有更多可供下載的免費模組。您只要透過這些模組即可快速地建置一個具有內容維護功能的網站。這樣的一個優秀的網站建置方案需要花多少錢??答案是免費。是的,我沒說錯就是免費。既然是免費的,為何不用?別急,或許您更應該考慮:我們有能力自行維護網頁內容?因為一個網站維護才是日後的最大成本花費,包括人力、資金和時間上的投入。在這裡,我可以很肯定的告訴您,只要您會編輯 Word 文件:打字,插圖,段落和編排等操作,絕對可以輕鬆上手。


來源:http://im.lifebook.com.tw/Production/WebSite.aspx

------
安裝說明:http://vbb.twftp.org/showthread.php?t=8436

詳細介紹:http://www.dnnmix.com/dotnetnuke-introduction/#more-194

DotNetNuke 為完全分離系統內容與網站外觀的系統,亦即可以在不影響文字內容的前提下改變網站的樣板。
可以使用 MODULE 來增添網站的內容,本身也提供了不少免費的模組。

2012年7月23日 星期一

[ASP.NET] WORD匯出功能跨頁面匯出,資料被洗掉問題

這次算是遇到了使用分頁(多視窗)執行同一個程式的問題吧

同時開啟兩個不同的視窗執行同一隻程式,

並且使用 STATIC 的變數去紀錄該頁面上的值,

卻發現... 第一個開啟的頁面的值會被第二個頁面產生得資料給取代掉><

--

2012年7月17日 星期二

[SQL]conversion failed when converting the nvarchar value to data type int

在寫預存程序的過程中,遇到了另一個問題:

"conversion failed when converting the nvarchar value to data type int"

--

主要是看到下面這個網址解掉的:

http://social.msdn.microsoft.com/Forums/en/transactsql/thread/45cc4cab-21c7-4062-b4d9-cb2c37dc922d


"There is an  error at:

     FETCH NEXT
     FROM @testvalue INTO @testid

As It try to Assingn varchar value to INT variable.

You need to declare @test_id as VARCHAR, so it can get Varchar values."


看了之後回去找自己的宣告是不是有相同的問題

發現原本的宣告是 DECLARE @DATA_CNT AS INT
改成 DECLARE @DATA_CNT AS NVARCHAR(10)
就解決了~~(灑花

--

以下額外參考:
http://stackoverflow.com/questions/6034441/dynamic-sql-error-converting-nvarchar-to-int


2012年7月11日 星期三

[ASP.NET] ASP.NET於IE7環境時,UPDATE PANEL版面跑掉問題

某個頁面在 IE7 環境底下只要 UPDATE  ASP.NET 的 TABLE

整個版面就會跑掉 (update 過的部分一片白),然後 resize 視窗之後資料又回來了

但在 IE8/9/CHROME 卻都能正常運作

很奇妙,簡直莫名其妙!



追查之後發現是 IE7 的 BUG(浪費我時間 = =)

加入 position: fixed 即可!

2012年7月10日 星期二

System.InvalidOperationException: 由於該物件目前的狀態,導致作業無效。

就在昨天,例行的巡了一下頁面,結果發現了個很令人流淚的 BUG 如下:


例外詳細資訊: System.InvalidOperationException: 由於該物件目前的狀態,導致作業無效。


問題是同樣的頁面上個月看還好好的啊囧

怎麼今天就變樣了

找半天找到如下的解法,晚點來試試...QQ

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


微软在 2011 年 12 月 29 号发布的 2011 年最后一个更新让哥哥为程序出现的异常头痛了一天. 这个异常在页面数据量小的时候并不会触发,只在页面数据量大的情况下才会出现,开始解决起来让人无从下手,最后才发现猫腻.
异常信息如下:
对象的当前状态使该操作无效。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidOperationException: 对象的当前状态使该操作无效。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:


[InvalidOperationException: 对象的当前状态使该操作无效。]
  System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded() +2692482
  System.Web.HttpValueCollection.FillFromEncodedBytes(Byte[] bytes, Encoding encoding) +61
  System.Web.HttpRequest.FillInFormCollection() +148
[HttpException (0x80004005): URL 编码窗体数据无效。] 
...
解决方法如下: 
   Author:    
 Hi i found the solution, it is due to the recent Microsoft security update we are getting this error. Seems they have added a new method called 'ThrowifmaxhttpkeycollectionKeysexceeded' with default value 1000, which means postback can contain only 1000 items.

Just add the following to your web.config(2.0 and above)

<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="5000" />
</appSettings>

ThrowIfMaxHttpCollectionKeysExceeded()
问题在这里.
出现这个异常的原因正是因为上年 12 月 29 号那次微软发布的最后一次非正常更新程序引起的.在这次安全更新中对于 asp.net 单次的提交量做了一个最大量限制 1000,出现这个异常正是因为页面提交量超过了 1000 这个限制.这个可以在 web.config 中增加参数来更改:
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="5000" />
</appSettings>


原文網址:
http://www.cnblogs.com/hexiaosheng/archive/2012/01/10/2317926.html

2012年7月5日 星期四

2012年6月8日 星期五

[EXT.NET] 簡短筆記


在前台JS呼叫錯誤訊息顯示方式:
 Ext.Msg.alert("提示訊息""訊息文字");

2012年5月22日 星期二

[EXT.NET]根據撈取的record資料決定是否disable該row的gridcommand

今天遇到的一個需求是必須要根據產生的同一列資料的狀態,進行決定是否 disable 該行 button 功能

原本想比照之前 disable checkbox 的作法去做,才發現根本沒有相同的選項可以設定...

查了一下官網得到了解答,還好不只有我有這個疑問,

簡單分享一下給大家~

2012年5月15日 星期二

透過javascript觸發ext.net的linkbutton事件


宣告好自己要用的 linkbutton 之後
加上下面這一行即可~
Ext.getCmp("HdnLinkBtn").fireEvent('click');

如果是只要在 javascript 事件的時候打開 ext window
直接用id呼叫就能打開了~
 Window.show();

2012年4月30日 星期一

[C#] 將頁面上的table轉為word,excel格式

在網路上有很多教學,
看一看之後只知道,寫法大概就是這樣...
不過還是不大懂,為什麼要這樣宣告來著>"<
為什麼不能直接宣告一個變數就好這樣...

後來在一篇教學找到了解答!
http://www.dotnetperls.com/htmltextwriter

以下是該教學的 overview 說明:
Overview. The new StringWriter is required for the HtmlTextWriter to write to. It is a buffer and everything that is written is written to this. The using keyword ensures that the system will Dispose of the objects properly. It is not really required but may make for more efficient code.


針對 stringwriter 的詳細說明:
http://www.dotnetperls.com/stringwriter
StringWriter is used with HtmlTextWriter. A StringWriter instance is required in the constructor. In code that uses StringWriter, you can also use the internal StringBuilder: this allows you to convert method return values to string types.


看到這邊總算釐清了心中的疑惑來著,
HtmlTextWriter 和 StringWriter 根本是共生的嘛囧!
比起很多只是教"怎麼做"的文章,我個人還是喜歡從基礎的地方理解起~
比較能夠融會貫通的感覺吧!


MSDN 說明:
http://msdn.microsoft.com/zh-tw/library/system.web.ui.htmltextwriter(v=vs.80).aspx

2012年4月25日 星期三

Can't find the property item in class hidden


"Can't find the property item in class hidden"
      可能原因有 2   1.uc 在 initial 的時候衝突了 
                                     解法:將動態產生 uc 的事件放到 initial 處
                                 2.viewstate 錯誤
                                     解法:將需要隱藏的 PANEL 的 viewstateDISABLE 掉即可
       後來兩種方式都採用,錯誤訊息於是遠離視線了....OTZ

2012年4月11日 星期三

[正規表示式] 說明文件

學習階段中~這真是博大精深的東西啊

好神好好用

不過也不容易來著 QQ

這篇主要貼網路上的介紹與教學文章~

因為他的實用性及歷史(?)網路尚能找到的資源很多

有空可以看看!

查 REGEX 或正規表示式都可以找到很多資料,
下面簡單附上部份文章~


2012年4月2日 星期一

[Ext.Net] 標題攔合併

這作法主要是再 COLUMN 之外再加一層跨欄標題列~
如下!



 <View>
  <ext:GroupingView>
      <HeaderGroupRows>
        <ext:HeaderGroupRow>
           <Columns>
              <ext:HeaderGroupColumn ColSpan="2" Header="" Align="Center" />
              <ext:HeaderGroupColumn ColSpan="3" Header="TEST~~TEST~   !!" Align="Center" />
            </Columns>
        </ext:HeaderGroupRow>
       </HeaderGroupRows>
   </ext:GroupingView>
 </View>

[Ext.Net] 根據資料預設勾選功能

這次的需求是進入頁面,讀到資料之後,

要根據讀到的資料對 gridpanel 內的 checkbox 進行勾選的動作

2012年3月26日 星期一

C#格式字元符號


格式字元符號說明
C使用貨幣格式顯示數值資料,例如:$123456
Dn使用十進位來顯示數值資料,之後的n是位數
E使用科學符號顯示數值資料
Fn使用指定小數部份的位數為n來顯示數值資料
G使用一般格式來顯示數值資料
N使用千分位來顯示數值資料,例如:987,654,321.0
X使用十六進位來顯示數值資料
--

記起來~研究怎麼用!

FROM:

2012年3月14日 星期三

[ASP.NET] FileUpload OnChange事件

這次客戶的需求是希望在檔案上傳時,

在一選擇完檔案的時候,就立刻自動把檔案的名字帶到另一個欄位,

讓使用者不必在手動輸入一次檔名。

一開始還苦於找不到CLIENTID,後來才知道原來可以把他設定為STATIC就好。

2012年3月1日 星期四

使用Chrome無法登入開心水族箱問題

某天突然就無法登入開心水族箱了,
可是使用其他的瀏覽器卻還是可以的,
就算刪光cookie也無法解決這個問題...找不到解法之下雖然可以另開其他瀏覽器,
但就是麻煩啊!!!!!

然後今天湊巧找到了解法...我只能說是應用程式沒寫好吧。

利用Power Shell完成從SQL撈資料+自動寄信功能(2)


補充一下實際撰寫時遇到的其他小問題:

1.憑證不足:

http://social.msdn.microsoft.com/Forums/zh-HK/237/thread/f67bed2e-1073-4964-88a9-7672a4ec3584

2.一次大量寄信會被視為spam的解決方法:
使用powershell的sleep,在每寄完一次信之後隔個2秒再繼續測下一封!
powershell delay的方法
http://powergui.org/thread.jspa?threadID=10285


In PowerShell v1 you can add delay by doing:
[System.Threading.Thread]::Sleep(10000)

In PowerShell v2 there is a start-sleep cmdlet:
Start-Sleep -Second 10 

利用Power Shell完成從SQL撈資料+自動寄信功能

這次主要的功能其實就是完成自動寄信(所謂垃圾信程式     哈)

簡單的流程就是先建立一個SQL連線之後,
把需要呈現的資料及寄件者名單撈出來,
再下來就是依條件處理寄信囉~簡潔明瞭吧!


首先是SQL連接的方式:
#Connection Object
$connector = New-Object System.Data.SqlClient.SqlConnection(
    "Password=********;Persist Security Info=True;User ID=sa;Initial Catalog=AdventureWorks;Data Source=DEEVUS-PC\SQLEXPRESS"
)


接著使用DataAdapter建立連線以及用DataSet接得到的資料
#使用需要的query字串建立連線&撈資料
$dataAdapter = New-Object System.Data.SqlClient.SqlDataAdapter($query, $connector )
#宣告DataSet
$dataSet = New-Object System.Data.DataSet
#接資料囉~
$dataAdapter.Fill($dataSet ) | Out-Null
#記得關閉連線
$connector .Close()