2012年6月26日 星期二

{C#} WebForm出現彈跳視窗


//彈跳訊息後關閉視窗
public void SowAndClose()
{
    Page p = (Page)System.Web.HttpContext.Current.Handler;
    ClientScriptManager CSM = p.ClientScript;
    String ScriptName = "close";
    String ScriptMsg = "alert('我是訊息');window.opener = null;window.open('','_self');window.close();";
    Type CsType = p.GetType();
    if (!CSM.IsStartupScriptRegistered(CsType, ScriptName))
    {
        CSM.RegisterStartupScript(CsType, ScriptName, ScriptMsg, true);
    }
}

//直接關閉視窗
public void Close()
{
    Page p = (Page)System.Web.HttpContext.Current.Handler;
    ClientScriptManager CSM = p.ClientScript;
    String ScriptName = "close";
    String ScriptMsg = "window.opener = null;window.open('','_self');window.close();";
    Type CsType = p.GetType();
    if (!CSM.IsStartupScriptRegistered(CsType, ScriptName))
    {
        CSM.RegisterStartupScript(CsType, ScriptName, ScriptMsg, true);
    }
}

資料來源:
http://www.aspxpet.com/ArchiveHtml/2010/1/Article-2b73c5fa-9068-4f00-ae35-0065853a6111.html

2012年6月22日 星期五

{Knowledge} 輸入法下keypress事件失效、事件無法同時使用

1.在新注音中文輸入法下,輸入文字將不會觸發KeyPress事件,只會有KeyDown事件
詳細解說:http://blog.darkthread.net/post-2011-04-26-keypress-event-under-ime.aspx

2.在Jquery下,同時使用change()、keyup()事件,無法同時被觸發
詳細解說:http://paladinprogram.blogspot.tw/2011/01/jquery-change-keyup.html

{JavaScript} 檢查輸入是否為數值、去掉左右空白

1.是否為數值
方法一、使用rregulate------/^\d+/.exec(Value)
如為null則為非數值,反之則為數值
方法二、IsNaN(Value)
---空白也會認定是數值
方法三、isFinite(Value)
---中文字會認定是數值



2.去掉空白
去掉左右空白正規化(Regulate):/^\s+|\s+$/g
去掉右邊空白正規化(Regulate):/(\s*$)/g
去掉左邊空白正規化(Regulate):/^\s+|\s+$/g





參考資料:

2012年6月21日 星期四

{C#} Gridview Style 設定 更新時間:6/21

1.內文依資料改變欄寬
<ItemStyle Wrap="false" />

2.內文置中
<asp:TemplateField HeaderText="abc" HeaderStyle-HorizontalAlign="Center"  ItemStyle-HorizontalAlign="Center">
HeaderStyle-HorizontalAlign="Center"---標題置中
ItemStyle-HorizontalAlign="Center"------內文置中


參考資料:http://msdn.microsoft.com/zh-tw/library/ms178296(v=vs.80).aspx

2012年6月19日 星期二

{C#}Datetime 找出本周星期幾日期

//當天本周的周五日期
var nowFriWeek = DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek)) + 5));


DateTime.Now.DayOfWeek---今天為星期幾
Convert.ToInt16(DateTime.Now.DayOfWeek)---如為0,則為本周周日,以此類推
(0 - Convert.ToInt16(DateTime.Now.DayOfWeek))--要加幾天算出本周周日(本周第一天)



參考資料:
http://tw.myblog.yahoo.com/terence-lee/article?mid=164

{C#} Gridview 修改標題方法

方法有二,如下:
一、在Gridview1_OnRowDataBound事件下---常常起不了作用

if (e.Row.RowType==DataControlRowType.Header)
{
     Gridview1.Columns[1].HeaderText="abc";
}

二、在Bind()後
Gridview1.HeaderRow.Cells[1].Text ="abc";


參考資料
http://kb.cnblogs.com/a/1571267/
http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/7a99bffa-b430-4538-8cb8-30b9fc2ad43f

2012年6月18日 星期一

{C#}檢查Column是否在DataTable中

bool yesOrNo= dt.Columns.Contains("欲確認欄位名稱");

當為Fales則為不存在
當為True則為存在

參考資訊:
http://www.dotblogs.com.tw/dotjum/archive/2008/04/19/2956.aspx

2012年6月15日 星期五

{Knowledge}DataTable.AcceptChanges()使用

DataTable.AcceptChanges()方法:
在使用DataRow Delete()刪除一列資料後 在使用DataTable AcceptChanges即為完全刪除(RemoveAt()),無法在回溯資料,如單純使用Delete()居則可以再回溯資料。
回溯資料的方法:RejectChanges()

Ex:
AcceptChanges();
Delete();
//回溯資料
RejectChanges()
//真正刪除
AcceptChanges();



參考資訊:
http://flylolo.blog.51cto.com/2743516/602066

http://tangzhongxin.blog.163.com/blog/static/89219612011222405917/

2012年6月13日 星期三

{C#} 回傳字串資料字數爆表(擴大MaxStringContentLength)

當一需要Return字串(或從資料庫撈大量字串資料回來)造成錯誤,擴大web.config MaxStringContentLength值方式--紅字處預設為8192:
<configuration>
<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="abc" closeTimeout="00:01:00">
          <readerQuotas maxDepth="32" maxStringContentLength="1000000" maxArrayLength="16384"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None"
              realm="" />
            <message clientCredentialType="abcd" algorithmSuite="Default" />
          </security>
        </binding>

      </basicHttpBinding>
    </bindings>
 </system.serviceModel>

參考資料:
http://social.msdn.microsoft.com/Forums/is/wcf/thread/cab9a5f9-7d2e-4b64-8338-8158b2f2b332

{C#} 取出Dictionary Values


//一般取值
foreach (KeyValuePair<string, TempWeek> entry in dicSalesWeek)
                {
                    DataRow newRow = dtSales.NewRow();
                    newRow["abc"] = entry.Value.abc;
                    dsSales.Tables[0].Rows.Add(newRow);
                }


//取得值得集合
    foreach (string s in  dicSalesWeek .Values)
    {
        //s即為集合值之一
        string a=s;
    }

詳細用法參考:
http://createps.pixnet.net/blog/post/32375859-c%23-dictionary%E7%94%A8%E6%B3%95

{C#} 取得類別下所有屬性

當有一Class為下,要取得Temp1、Temp2名稱


public  class Temp
        {
            public string Temp1{ set; get; }
            public string  Temp2 { set; get; }
        }

方法:

Temp tempTest = new Temp();
Type temType =  tempTest .GetType();

 foreach (var prop in temType.GetProperties())
{
    string=prop.Name;
   //prop.Name為Temp1、Temp2
}

參考資料:
http://kelp.phate.org/2011/08/displaynamedescription-net-reflection.html

{C#} GridView 欄位值某條件改變字色

當Gridview中資料符合某資料時,帶出的值變字色

在Gridview OnRowDataBound事件下,當值小於0,則變紅色字體(系統設定之紅色)


if(float.Parse(e.Row.Cells[i].Text)<0)
{
    e.Row.Cells[i].ForeColor = System.Drawing.Color.Red;
}

附:改變其值

if (e.Row.Cells[6].Text == "-1")
    e.Row.Cells[6].Text = "No Forecast";

參考資斗:
http://www.blueshop.com.tw/board/show.asp?subcde=BRD200610031156181Y8

2012年6月11日 星期一

{C#} 二個日期相差天數計算(TimeSpan 結構)

使用TimeSpan 結構,計算二個Datetime格式相差之天數、月、年等

//先將指定日期值轉為DateTime

 if (!string.IsNullOrEmpty(abcStr))
                        abcDate = DateTime.ParseExact( abcStr , "yyyy/MM/dd", null);
                    //實際日期大於當下
                    if (  abcDate > DateTime.Now)
                    {
                          //找出指定日期的第一天(以週日為一週的第一天)
                          abcDate =   abcDate .AddDays(Convert.ToDouble((0 - Convert.ToInt16(  abcDate .DayOfWeek))));
                       //算出指定週,規則說明:以本週為第0週,算出指定日期為第幾週
                        var week = ( abcDate.Subtract(DateTime.Now).Days + 1) / 7; //日期相減

                    }


TimeSpan值屬性與方法:

Days:返回用天數計算相差天整數。(時間相差會有時、分、秒考慮,會有不滿一天的可能)

Subtract:從中減去另一個時間值。

Ticks:返回TimeSpan值的tick數。//詳見用法參考連結

TotalDays:返回時間值表示的天數。(與Days的差別是,此會將會小數點(不滿一天的相差值)



更多詳細在參考屬性、方式等資訊:
http://msdn.microsoft.com/zh-tw/library/system.timespan.aspx

參考資料:
http://www.guan8.net/Java/430623.html

Tick用法參考:
http://www.dotblogs.com.tw/darren.net/archive/2009/02/26/7303.aspx

2012年6月10日 星期日

{C#} DataTable 複製


DataTable dt = new DataTable();
//1.複製架構
dt = oldDt.Clone();


//2.複製資料

foreach (DataRow dr in  oldDt.DataRow)
{
   dt.ImportRow(dr);
}


參考資料:
http://tw.myblog.yahoo.com/frankintaiwan/article?mid=650&prev=659&l=f&fid=12

{Linq}多條件Join Table

使用多個條件,Join二個Table

Linq:

var Result= (from header in abc
                              join body in bcd on
                              new
                              {
                                  one= header. 條件一 ,
                                  two= header.條件二
                              } equals new { body.條件一, body. 條件二} into newResult
                              from body in newResult.DefaultIfEmpty()
                              select new abcType
                              {
                                  a= body != null ? int.Parse(body.SOItemId) : 0,
                                  b=header.CPSPN
                              }).ToList();


Inner Join、Outer Join、Right Join 、Left Join 示例
http://www.clarkrabbit.net/2009/01/code-snippet-left-join-inner-join-and.html

前提:兩個Join Table需是指定某類別之 List()

參考資料:
http://blog.darkthread.net/post-2010-08-12-linq-left-join.aspx

2012年6月8日 星期五

{Knowledge} 當Excel 複製格式失效解決方式


解決方式:win xp>>控制台->新增移除程式、win 7>>程式集->解除安裝)
解除(移除)安裝>Skype Click To Call 應用程式 (ps.解除期間會要求關閉所有瀏覽器)
PS.以上不需重新啟動、不需關閉Excel

參考資料:
http://www.wretch.cc/blog/ocaltar/473166

2012年6月1日 星期五

{C#} FileUpload搭配Jquery多檔上傳、指定上傳格式

//以下條件為單檔上傳,檔案只能為Excel File2003或Excel File 2007
<asp:FileUpload ID="FileUpload1" class="multiFile"  maxlength="1" accept="xls|xlsx" runat="server" />


Jquery Multiple File Upload Plugin下載js檔
載入aspx 執行FileUPload元件


屬性:
class="multiFile">>多個檔案上傳
 maxlength="1">>一次只能一個
accept="xls|xlsx">>允許上傳副檔


參考資訊:http://www.fyneworks.com/jquery/multiple-file-upload/#tab-Examples