BloggerAds

目前分類:Asp.net篇 (11)

瀏覽方式: 標題列表 簡短摘要

最近遇到要在windows桌面程式中用程式去開啟加密過的PDF文件,並且要在程式中讓使用者輸入PDF開啟密碼後直接開啟檔案,即檔案開啟不再要求輸入密碼,由於Adobe好像無法以command的方式帶入密碼開啟檔案,也查無相關API,最後只好另外找了元件iTextSharp來代替。

在將iTextSharp加入專案後,可以用PdfReader讀入加密過的PDF檔案,並進行PDF文件的操作

文章標籤

達達 發表在 痞客邦 留言(0) 人氣()

如果GridView還沒有被繫結資料時,就做gv.Columns[0].Visible = false,那麼就會造成PostBack後無法取得隱藏欄位的值,因為此欄位並沒有Render程Html到前端,

所以應該要在GridView.RowCreated 事件中隱藏欄位,Create事件是在DataBound後發生的,所以此時資料已經繫結到GridView,就不會發生PostBack取不到值的狀況

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{ 
    e.Row.Cells[RowIndex].Visible = false;
}

文章標籤

達達 發表在 痞客邦 留言(0) 人氣()

查詢

// 查詢
var result = from q in mydt.AsEnumerable()
             select q;
// 防止NULL值
if (result.FirstOrDefault<DataRow>() != null)
{
    DataTable dt = result.CopyToDataTable<DataRow>();
    foreach (DataRow dr in dt.Rows)
    {
        Response.Write(
            string.Format("{0} - {1} - {2} - {3}",
            dr["Id"].ToString(),
            dr["Name"].ToString(),
            dr["Age"].ToString(),
            dr["Sex"].ToString()));
    }
}

WHERE

// 有條件查詢
var result = from q in mydt.AsEnumerable()
              where q.Field<int>("Age") > 30
              select new UserInfo()
              {
                  Id = q.Field<int>("Id"),
                  Name = q.Field<string>("Name"),
                  Age = q.Field<int>("Age"),
                  Sex = q.Field<int>("Sex")
              };
foreach (UserInfo info in result)
{
    Response.Write(string.Format("{0} - {1} - {2} - {3}",
                info.Id, info.Name, info.Age, info.Sex));
}

COUNT

文章標籤

達達 發表在 痞客邦 留言(0) 人氣()

ASP.NET與ASP的差別在於,ASP.NET不是ASP版本的更新,而是一個全新的統一Web開發平臺。ASP是以直譯式語言架構,每次讀取網頁皆需逐行編譯程式碼,執行效率不佳;而ASP.NET則是編譯式語言,執行編譯過的原生機器碼使效能大幅提升。兩者皆可在記事本撰寫程式,更重要的是,ASP.NET不限於VBScript或JScript語言,可搭配Visual Studio .NET工具,使用任何.NET相容語言開發ASP.NET,包括Visual Basic .NET、Visual C#及JScript .NET。

ASP的副檔名為「.asp」,ASP.NET的副檔名為「.aspx」,兩者的撰寫模式相似性高,但是,ASP.NET的物件模型作了大幅修改,加強結構化和物件導向,並非完全回溯相容(Backward Compatible),大部分的ASP網頁必須大幅修改過後才能在ASP.NET下執行。
文章標籤

達達 發表在 痞客邦 留言(0) 人氣()

最近遇到的問題:

System.Web.HttpException: URL 編碼型式資料無效。 ---> System.InvalidOperationException: 由於該物件目前的狀態,導致作業無效。
   於 System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded()
   於 System.Web.HttpValueCollection.FillFromEncodedBytes(Byte[] bytes, Encoding encoding)
   於 System.Web.HttpRequest.FillInFormCollection()
   --- 內部例外狀況堆疊追蹤的結尾 ---
   於 System.Web.HttpRequest.FillInFormCollection()
   於 System.Web.HttpRequest.get_Form()
   於 System.Web.HttpRequest.get_HasForm()
   於 System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
   於 System.Web.UI.Page.DeterminePostBackMode()
   於 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

沒辦法下中斷點看問題在哪,因為還沒進Page_Load頁面就掛了,Google了一下發現
ASP.NET 在處理 HTTP POST 要求時最多只能接受 1000 個參數,當參數超過1000個時就會出現這個錯誤

文章標籤

達達 發表在 痞客邦 留言(0) 人氣()

Access 連線:

connectionString="Provider=Microsoft.Jet.OleDb.4.0;Data Source=mdb路徑"

MSSQL連線:

connectionString="Data Source=主機名稱;User ID=帳號;Password=密碼;Initial Catalog=DB名稱;Persist Security Info=True;
providerName="System.Data.SqlClient"

文章標籤

達達 發表在 痞客邦 留言(0) 人氣()

匯出Excel網路上能查到很多種方式,像是NPOI、EPPlus、ClosedXML等

但偶爾會遇到不能使用這些套件的環境,所以這邊以 Interop.Excel 操作為例

將DataTable匯出為Excel,匯出格式為xlsx檔

文章標籤

達達 發表在 痞客邦 留言(0) 人氣()

WebControls中的Button控制項或ImageButton在Render成 Html 後 type屬性會變成 submit 例:<input type="submit" value="submit">

這時在後端Page_Load中無法用Request.Form["__EVENTTARGET"]取得控制項ID,因為他們並不會觸發__doPostBack的機制

以下為替代方法

文章標籤

達達 發表在 痞客邦 留言(0) 人氣()

今天遇到要寫入大量資料的情形,一開始沒想到資料量相當龐大(一開始我也不曉得到底有多少資料)

就自然的跑迴圈一筆一筆Insert,結果程式一跑下去還以為當機,整個停擺不動,嚇我一跳,

這時才想到應該是資料量太大,Insert時間太長了,就查了下資料來源...

文章標籤

達達 發表在 痞客邦 留言(0) 人氣()

Response.Redirect(String url)會呼叫Response.Redirect(String url, bool endResponse)

當endResponse為true(預設)時,就會呼叫 Response.End() 並拋出 ThreadAbortException

如果系統有記錄Log就會擷取到錯誤訊息,若要避免這時產生錯誤的話,endResponse傳入false就行了

文章標籤

達達 發表在 痞客邦 留言(0) 人氣()

在Asp.net 中,使用「擷取使用者控制項」功能將aspx中設計好的多個控制項一次包成一個使用者控制項

1.在 .aspx 原始檔模式中選取欲打包的程式碼,右鍵選擇「擷取使用者控制項」

文章標籤

達達 發表在 痞客邦 留言(0) 人氣()