顯示具有 C# 標籤的文章。 顯示所有文章
顯示具有 C# 標籤的文章。 顯示所有文章

2021年5月31日 星期一

[LINQ] C# datatable query (CopyToDataTable)

 使用linQ的CopyToDataTable時,無資料會產生「來源未包含 DataRow」的錯誤。

上網查了下有很多方式可以用,有的用Any()判斷有資料再進行CopyToDataTable,

但不知為何我Any()叫不出來,只好改將dtEmp 當CopyToDataTable的參數傳入,避免無資料時CopyToDataTable產生「來源未包含 DataRow」的錯誤。

下方為程式碼,可以參考看看。


                    DataTable dtEmp = new DataTable();


                    //將 dtEmp 當CopyToDataTable的參數傳入,避免無資料時CopyToDataTable產生「來源未包含 DataRow」的錯誤

                    (from e in dt_hr_employee.AsEnumerable()

                     where e.Field<string>("ID") == ID

                     select e).CopyToDataTable(dtEmp, LoadOption.PreserveChanges);


                    if (dtEmp.Rows.Count > 0)

                    {

                        Session.Add("ID", dtEmp.Rows[0]["ID"]);

                        Session.Add("department", dtEmp.Rows[0]["部門"]);

                        Session.Add("Cname", dtEmp.Rows[0]["中文名"]);

                        Session.Add("Ename", dtEmp.Rows[0]["英文名"]);

                    }

                    else {

                        // 無此人

                        lblErrMsg.Text = "User Server NG";

                    }

2020年7月30日 星期四

2020年4月24日 星期五

[C#] 取代雙引號

這真的要記一下,不然都會忘掉

string str = str.Replace(@"""", "");

2020年2月6日 星期四

[C#] 英文轉數字

一般的英文轉數字

int a = (int)"A";


用於Excel將英文欄位轉換成對應的數值

      private int Column(string str)
        {
            char[] arr = str.ToCharArray();
            int column = 0;

            if (arr.Length == 1)
            {
                column = (int)arr[0] - 65 + 1;
            }
            else if (arr.Length == 2)
            {
                column = ((int)arr[0] - 65 + 1) * 26 + (int)arr[1] - 65 + 1;
            }
           
            return column;
        }

2019年4月10日 星期三

[ASP.NET] SqlBulkCopy (大量 INSERT 資料)

最近接觸到需要大量寫入資料的需求,
想起以前有碰過 SqlBulkCopy 這玩意,
它寫起來簡單且效率奇高,認真的推薦給大家~

WriteToServer() 允許使用 DataRow[]、DataTable、IDataReader、DbDataReader 做為資料來源。下面例子是使用 DataTable 匯入,需要注意的點是匯入匯出的資料表欄位名稱與資料型態都要一致。


2018年9月27日 星期四

判斷是否為空值(Is Nothing、IsDBNull)

C#似乎只能用等於某值來做判斷= =;;


VB

控制項 Is Nothing 
IsDBNull(資料欄位)


C#

控制項 == null
資料欄位 == DBNull.Value

2018年9月26日 星期三

For Each / foreach

嗯....這寫法算是有點不一樣!


VB

For Each row As DataRow In GridView1.Rows
   ...
Next


C#

foreach (GridViewRow gvRow in gvAssignEmp.Rows)
{
   ...
}

Try Catch

除大小括弧外,大小寫也是容易錯的地方!

VB


Try
    ...
Catch ex As Exception
    ...
End Try


C#

 try
{
    ...
}
catch (Exception ex)
{
    ...
}

2018年9月13日 星期四

DropDownList 一直跳回某個選項(亂跳)


今天發生一個很弔詭的狀況
就是在沒有指定SelectIndex、也沒有重新繫結DropDownList的狀況下
DropDownList 一直跳回某個選項

後來發現原來是因為ListItem的Value重複的關係

2018年9月12日 星期三

清除GridView資料

VB

Gridview1.DataSource = nothing
Gridview1.DataBind()

C#

Gridview1.DataSource = null;
Gridview1.DataBind();

顯示行號


沒有行號真的很難除錯,沒想到換個語言開發要重新設定的時候熊熊忘記怎麼做,趁還記得趕快紀錄下來XD

步驟如下:

1.          在功能表列上選擇 [工具] > [選項] 。
2.          展開 [文字編輯器] 節點,然後選取所使用語言的節點。
3.          找不到所使用語言可勾選視窗左下角 [顯示所有設定]。
4.          在顯示區塊勾選 [行號]。







Split 字串分割

單引號雙引號、中括弧小括弧...
我覺得我要瘋了= =

VB

str.Split(" ")(0)

C#

str.Split(' ')[0];

RowDataBound 的 RowType

用 RowType分門別類處理Row的事件可以避免很多莫須有的問題喔 !

protected void gvRowDataBound(object sender, GridViewRowEventArgs e)
    {
        switch (e.Row.RowType)
        {
            //資料列
            case DataControlRowType.DataRow:
                RowControllerDataBinding(e);
                break;           
        }
    }

2018年9月7日 星期五

SELECT CASE (SWICH CASE)


switch (e.CommandName)
        {
            case "1":
                Console.WriteLine("Case 1");
                break;

            case "2":
            case "3":
                Console.WriteLine("Case 2.3");
                break;

            default:
                Console.WriteLine("Case Else");
                break;
        }



記得要加break....(淚)

If(一般/簡寫)

[VB]

一般寫法

If  menuType  = 0 Then
         result  = "成立"
Else
        result  = "
不成立"
End if

簡寫

result  =  If( menuType  = 0 ,"成立","不成立")

[C#]

一般寫法

if(menuType  == 0){
         result  = "成立";
}else{
        result  = "
不成立";
}



簡寫

result  = menuType == 0  ?  "成立": "不成立";
result  = (menuType == 0 ) ?  "成立": "不成立";

從 GridView 中找到 Row


RowCommand事件

GridViewRow row = (GridViewRow)(((Control)e.CommandSource).NamingContainer);

用同Row中的控制項

GridViewRow row = (GridViewRow)(((Control)sender).NamingContainer);
GridViewRow row = (GridViewRow)(Label1.NamingContainer);

VB轉型,C#泛型(FindControl)

VB

Ctype(row.FindControl("lblManager3"), Label).Text = string.Empty

C#

((Label)row.FindControl("lblManager3")).Text = string.Empty;

2013年12月2日 星期一

VB?! 我是學C#的啊!!

VB?!

老實說我今天也是第一次接觸它,
所以就讓找個網站來聊聊好了。

根據維基百科的說法,它源自於BASIC程式語言。VB擁有圖形化使用者介面(GUI)和快速應用程式開發(RAD)系統,可以輕易的使用DAO、RDO、ADO連線資料庫,或者輕鬆的建立ActiveX控制項。程式設計師可以輕鬆的使用VB提供的元件快速建立一個應用程式。

但老實說可能是因為都是用ASP.NET寫的所以我除了一些與C#不同處外,
我對VB其實沒有太大的感覺。
(不過繼續讀下去就不知道了= =...話還是不要說太滿好了。)

不過維基百科再看下去就變成正反雙方的攻防戰了,
反正我對這些也不是很感興趣,
因為我現在最重要的就是把這傢伙搞上手啊!

如果想要迅速把C#轉成VB的話,
我倒是有看到些網站,大家可以試試,不過效果不保證啊!

  1. Convert C# to VB.NET - A free code conversion tool from Developer Fusion
  2. Snippet Converter for .NET 2.0


以上~





所以真的要說的話,這篇文根本是廢文一篇,
可以直接SKIP了,請往下一篇移動吧!
(那當初幹嘛寫啊?!)

[Excel] 日期(數值)轉文字

Excel的日期格式真的常常使人抓狂, 在使用者輸入日期後該欄位真正的值會被Excel轉換成一串數字, 這串數字代表著自1900/1/1到該日期的總天數。 但程式或使用者真正要的,就不是這串數字, 他們就是要日期!要日期!! So, 為了取得真正的值只好使用TEXT函數來解決了 ...