2012年11月2日 星期五

以ViewState建立GridView


以ViewState建立Table 並建立新欄位


  if (this.ViewState["tempCUST"] == null)
            {
                DataTable tempdt = new DataTable();
                tempdt.Columns.Add("BORROWER_NM");
                tempdt.Columns.Add("GUAR_NM");
                tempdt.Columns.Add("ACCT_DATA");
                tempdt.Columns.Add("ACCT_DATA2");
                tempdt.Columns.Add("GUAR_SYSID");
                //tempdt.Rows.Add(tempdt.NewRow());
                this.ViewState["tempCUST"] = tempdt;
            }




string returnValue = this.returndata.Value;   //某個Table轉字串接過來
string[] arrreturnValue = returnValue.Split(';'); //分割符號



  DataTable dt = (DataTable)ViewState["tempCUST"];

            foreach (string item in arrreturnValue)
            {
                if (!string.IsNullOrEmpty(item))
                {
                    string[] arrItem = item.Split(',');
                    string strBORROWER_NM = arrItem[0];
                    string strGUAR_NM = arrItem[1];
                    string strACCT_DATA = arrItem[2];
                    string strACCT_DATA2 = arrItem[3];
                    string strGUAR_SYSID = arrItem[4];


                    DataColumn dc = new DataColumn();
                    DataRow dr = dt.NewRow();
                    dr["BORROWER_NM"] = strBORROWER_NM;
                    dr["GUAR_NM"] = strGUAR_NM;
                    dr["ACCT_DATA"] = strACCT_DATA;
                    dr["ACCT_DATA2"] = strACCT_DATA2;

                    dr["GUAR_SYSID"] = strGUAR_SYSID;
                    dt.Rows.Add(dr);

                }
            }
            ViewState["tempCUST"] = dt;
            this.grid_CustW03.DataSource = dt;
            this.grid_CustW03.DataBind();


GridView 塞空值


 DataTable dt = new DataTable();


 dt.Rows.Add(dt.NewRow());
 dt.Rows.Add(dt.NewRow());
 dt.Rows.Add(dt.NewRow());

 this.grid_CustW03.DataSource = dt;
 this.grid_CustW03.DataBind();

FindControl

//一般 FindControl RadioButton為例
((RadioButton)grid_view.Rows[i].FindControl("RadioButton2")).Checked == false




 foreach (GridViewRow item in grid_view.Rows)
{

    if (((RadioButton)item.FindControl("RadioButton2")).Checked == true)
            {
             ....
            }

}


///指定當下選擇的物件

 protected void RadioButton_CheckedChanged(object sender, EventArgs e)
 {


            string RadioNowGUAR_SYSID = ((Label)((RadioButton)sender).NamingContainer.FindControl("lblGUAR_SYSID")).Text;
....
}





2011年7月5日 星期二

[SQL]MS SQL 自動編號(identity)歸零(reset)


1 -- DBCC CHECKIDENT('dbo.table_name', RESEED, 0)
2 -- 範例:
3 DBCC CHECKIDENT(CashCardDailyRpt, RESEED, 0)
CashCardDailyRpt 是一個 Table

2010年7月28日 星期三

[專案管理] .Net 架構同步開發工具 TortoiseSVN + AnkhSVN

在Team work 的年代,常常會需要一起協同工作...

傳統會使用Microsoft Visual Source Safe 或是 TFS(Team Foundation Server)..

但是TFS設定上面頗麻煩,而且基本上這兩套軟體都要 $ $ ...

所以我最近都是使用這種搭配組合...

第一步 - 首先先安裝 TortoiseSVN






基本上 就是一直下一步到底..

最後重開機,也請乖乖地重開機...

第二步 - 安裝 AnkhSVN

這一套軟體,他是幫助你,如果你對SVN的東西不太熟..真的極度建議使用這一套..

他會在你打開專案的時候...

讓你專案圖示旁邊讓你知道 ...

這檔案的編輯狀態...

至於至於他有很多功能.. 我這邊就不贅述...可以上官網許多教學文件

但是這邊分享一個血與淚的經驗...



如果你發現....

你突然你突然突然專案...

AnkhSVN 的關於專案修改顯示圖示消失了....

有可能是因為Visual Studio 的Source Control 設定亂掉了...

你在怎麼重灌都沒用...

下面是改回來的教學..

相信我我為這重灌超多次的.....

首先打開Visual Studio 選擇 Tool => Options




接下來點選 Source Control => plugin Selection 你會看到

Current source control plug-in 如果是 Visual Studio Team Foundation Server

代表這是錯的....



記得把這邊設定改成...

AndhSVN - Subversion Support for Visual Studio




這樣按ok 存檔...重開vs.net 大功告成..


這樣svn 的提示圖案都會出現了...


相信我有一天這可以免除你重灌的命運...

引用至
http://minord.blogspot.com/2010/07/net-tortoisesvn-ankhsvn.html

2010年7月16日 星期五

大量匯入資料時保留識別值

http://technet.microsoft.com/zh-tw/library/ms186335(SQL.90).aspx

以將包含識別值的資料檔案大量匯入 Microsoft SQL Server 的執行個體中。根據預設,會忽略所匯入資料檔案中的識別資料行值,SQL Server 會自動指定唯一值。唯一值的依據是資料表建立期間所指定的初始值及累加值。
如果資料檔不包含資料表中識別碼資料行的值,請使用格式檔案指定在匯入資料時應略過資料表中的識別碼資料行。SQL Server 會自動為資料行指定唯一值。
若要在將資料列大量匯入資料表時,不讓 SQL Server 指定識別值,請使用適當的 keep-identity 命令限定詞。當您指定 keep-identity 限定詞時,SQL Server 會使用資料檔案中的識別值。這些限定詞如下:

命令 Keep-identity 限定詞 限定詞類型
bcp-E參數
BULK INSERTKEEPIDENTITY引數
INSERT ...SELECT * FROM OPENROWSET(BULK...) KEEPIDENTITY資料表提示
如需詳細資訊,請參閱<bcp 公用程式>、<BULK INSERT (Transact-SQL)>、<OPENROWSET (Transact-SQL)>、<INSERT (Transact-SQL)>、<SELECT (Transact-SQL)>及<資料表提示 (Transact-SQL)>。

範例

本主題中的範例會使用 INSERT ...SELECT * FROM OPENROWSET(BULK...) 並保留預設值來大量匯入資料。

範例資料表

大量匯入資料的範例需要在 dbo 結構描述下的 AdventureWorks 範例資料庫中,建立一個名為 myTestKeepNulls 的資料表。若要建立這個資料表,請在「SQL Server Management Studio 查詢編輯器」中執行:

USE AdventureWorks;
GO
SELECT * INTO HumanResources.myDepartment
  FROM HumanResources.Department
     WHERE 1=0;
GO
SELECT * FROM HumanResources.myDepartment;

myDepartment 所依據的 Department 資料表已將 IDENTITY_INSERT 設為 OFF。因此,若要將資料匯入識別資料行,您必須指定 KEEPIDENTITY 或 -E。如需資料表的結構描述,請參閱<Department 資料表 (AdventureWorks)>。

範例資料檔

大量匯入範例中所使用的資料檔包含從 HumanResources.Department 資料表中大量匯出的原生格式資料。若要建立資料檔,請在 Microsoft Windows 命令提示字元中,輸入:

bcp AdventureWorks.HumanResources.Department out myDepartment-n.Dat -n -T

範例格式檔案

大量匯入範例使用 XML 格式檔案 myDepartment-f-x-n.Xml,而它是使用原生資料格式。此範例使用 bcpAdventureWorks 資料庫的 HumanResources.Department 資料表來產生這個格式檔案。在 Windows 命令提示字元中,輸入:

bcp AdventureWorks.HumanResources.Department format nul -n -x -f myDepartment-f-n-x.Xml -T

如需有關建立格式檔案的詳細資訊,請參閱<建立格式檔案>。

2009年11月10日 星期二

已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值。

1.與DB的connection開太多且用完後沒有關閉,導致connection pool已滿
2.dataReader 用完後沒有關閉

我的情況是兩種可能都有 XD

改掉之後程式就正常了

還有一種方法就是將connection pool加大

設定的方法就是在connectionString最後面加上Max pool size = 200

類似這樣
Server=myServerAddress;Database=myDataBase;Uid=myUsernamePwd=myPassword;Max pool size = 200

參考資料

補充說明:參考資料

Min pool size 代表在connection pool裡最少有幾個連接數,假設你Min pool size設5
那connection pool建立的時候,裡面就會有5個conncetion。

Max pool size則代表connection pool裡最多能有幾個connection。


如果connectioin已達到Max pool size且connection pool中的connection全部都在使用中,要打開新的SqlConnection物件時,則要等待一個SqlConnection物件關閉,然後才可以使用新的SqlConnection物件。如果請求等待時間超過ConnectionTimeout屬性指定的秒數,則會拋出exception。