在ASP.NET網站中經常使用主版頁面(MasterPage)來製作相同的配置樣式以統一所有頁面的外觀,今作了一個小實驗,以釐清觀念,在套用了主版頁面後,網頁的生命週期是如何進行的。

Step 1:在MasterPage中的後置程式碼中,依序建立PreInit、Init、InitComplete、PreLoad、Load、LoadComplete、PreRender、Render....的事件區塊,再Response.Write() 輸出識別用的字串,如以下code:

忙裡偷閒 發表在 痞客邦 留言(1) 人氣()

NPOI是在.NET上實現DataTable、Excel互轉的利器,工作上我習慣用該組件來實現所需的功能。具體做法可以參考MSDN CodePlex上的說明。我根據gipi大所提供的換行作法,修改了CodePlex上匯出excel部分的程式碼,如下所示 :

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using NPOI;
using NPOI.HPSF;
using NPOI.HSSF;
using NPOI.HSSF.UserModel;
using NPOI.POIFS;
using NPOI.Util;
 
public class DataTableRenderToExcel
{
    public static Stream RenderDataTableToExcel(DataTable SourceTable)
    {
        HSSFWorkbook workbook = new HSSFWorkbook();
        MemoryStream ms = new MemoryStream();
        HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet();
        HSSFRow headerRow = (HSSFRow)sheet.CreateRow(0);
 
        // handling header.
        foreach (DataColumn column in SourceTable.Columns)
            headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
        // handling value.
        int rowIndex = 1;
 
        foreach (DataRow row in SourceTable.Rows)
        {
            HSSFRow dataRow = (HSSFRow)sheet.CreateRow(rowIndex);
 
            foreach (DataColumn column in SourceTable.Columns)
            {
                HSSFCellStyle cs = (HSSFCellStyle)workbook.CreateCellStyle();
                cs.WrapText = true; // 設定換行
                cs.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.TOP; //文字對齊方式
                dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString());
                char[] ch = new char[]{'\n'};
                string[] str = row[column].ToString().Split(ch); 
                if (row[column].ToString().Contains("\n"))
                {
                    dataRow.Cells[column.Ordinal].CellStyle = cs;
                    dataRow.HeightInPoints = str.Length * sheet.DefaultRowHeight / 20;//計算Cell的高度
                }
            }
            rowIndex++;
        }
        workbook.Write(ms);
        ms.Flush();
        ms.Position = 0;
        sheet = null;
        headerRow = null;
        workbook = null;
        return ms;
    }
    public static void RenderDataTableToExcel(DataTable SourceTable, string FileName)
    {
        MemoryStream ms = RenderDataTableToExcel(SourceTable) as MemoryStream;
        FileStream fs = new FileStream(FileName, FileMode.Create, FileAccess.Write);
        byte[] data = ms.ToArray();
        fs.Write(data, 0, data.Length);
        fs.Flush();
        fs.Close();
        data = null;
        ms = null;
        fs = null;
    }
}

文章標籤

忙裡偷閒 發表在 痞客邦 留言(0) 人氣()

適用於SQL Server 2008

select b.* from sys.objects a inner join sys.columns b

忙裡偷閒 發表在 痞客邦 留言(0) 人氣()

最近寫了一支定時執行工作的程式,想在工作結束時將寫入情況、耗費時間寫入到Log檔。無意中發現微軟已經把寫入到Log檔的功能已經包好了,真是佛心來的。

只要透過My.Application.Log.WriteEntry這支function就能寫入到Log檔。而預設的Log檔是存放在一個隱藏的資料夾中:

忙裡偷閒 發表在 痞客邦 留言(0) 人氣()

情境模擬如示意圖 : 點擊GridView上的TextBox後,要帶出ModalPopupExtender,勾選ModalPopupExtender上的選項後再將值寫回Textbox上。

2011-7-5 20-50-27.png    

文章標籤

忙裡偷閒 發表在 痞客邦 留言(0) 人氣()

微軟的ajax tool kit有個CalendarExtender控制項可以很方便的產生萬年曆供user選取日期,
也能在後置程式碼中取得選取值。但如果想在前端js中取到選許的日期,就沒那麼容易了。經過努力爬文後,

忙裡偷閒 發表在 痞客邦 留言(0) 人氣()

以往在前端網頁中,利用javascript產生的資料想送回後端,交由後端程式處理時,會利用一個隱藏欄位+一個隱藏按鈕(display:'none'),將資料寫入到隱藏欄位中後,再利用javascript去觸發隱藏按鈕,去執行button_click中的程式,如以下寫法:

<script src="jquery-1.4.4.js" type="text/javascript"></script>

文章標籤

忙裡偷閒 發表在 痞客邦 留言(1) 人氣()

今天發現了jQuery的選擇器上有個不錯的功能,可以快速的找出table上的奇數欄位or偶數欄位,如果要在奇(偶)數欄位上使用不同的背景顏色,這時就派上用場了。

<STYLE>

忙裡偷閒 發表在 痞客邦 留言(0) 人氣()

長久以來,我的Visual Studio 2008經常跳出無法啟動程式的錯誤,按了確定後,沒執行偵錯又回到vs2008裡了,爬文許久,終於找到解決方法了 :

1)  Open RegEdit

忙裡偷閒 發表在 痞客邦 留言(0) 人氣()

假設我想在某一張帶有HyperLink的圖片上,當滑鼠游移上去時,能直接觸發jQuery的.click() event去驅動它自動連結到HyperLink指定的網頁,

如這樣:

忙裡偷閒 發表在 痞客邦 留言(0) 人氣()