2016年8月9日 星期二

ASP.NET DataTable Sorting c#

ASP.NET DataTable Sorting c#

DataTable dt = new DataTable();

dt.Columns.Add("Column_1", typeof (string));

dt.Columns.Add("Column_2", typeof (string));

dt.Columns.Add("Column_3", typeof (string));


dt.Rows.Add("1", "二", "C");

dt.Rows.Add("2", "三", "A");

dt.Rows.Add("3", "一", "B");

dt.DefaultView.Sort = "Column_1 DESC";

dataGridView1.DataSource = dt;

dt.DefaultView.sort = "AG DESC";

dt = dt.DefaultView.ToTable(); //將排序好的 DefaultView 產出新的DataTable 或是複寫回去。

ref:
https://social.msdn.microsoft.com/Forums/zh-TW/07dda425-e1b7-4202-8fca-31c3c31a0159/datatable-?forum=233

2016年6月30日 星期四

ASP.NET Web 網頁中偵測瀏覽器類型

 ASP.NET Web 網頁中偵測瀏覽器類型




https://msdn.microsoft.com/zh-tw/library/3yekbd5b(v=vs.100).aspx


protected void Button1_Click(object sender, EventArgs e)

        {

            System.Web.HttpBrowserCapabilities browser = Request.Browser;

            string s = "Browser Capabilities\n"

                + "Type = " + browser.Type + "\n"

                + "Name = " + browser.Browser + "\n"

                + "Version = " + browser.Version + "\n"

                + "Major Version = " + browser.MajorVersion + "\n"

                + "Minor Version = " + browser.MinorVersion + "\n"

                + "Platform = " + browser.Platform + "\n"

                + "Is Beta = " + browser.Beta + "\n"

                + "Is Crawler = " + browser.Crawler + "\n"

                + "Is AOL = " + browser.AOL + "\n"

                + "Is Win16 = " + browser.Win16 + "\n"

                + "Is Win32 = " + browser.Win32 + "\n"

                + "Supports Frames = " + browser.Frames + "\n"

                + "Supports Tables = " + browser.Tables + "\n"

                + "Supports Cookies = " + browser.Cookies + "\n"

                + "Supports VBScript = " + browser.VBScript + "\n"

                + "Supports JavaScript = " +

                    browser.EcmaScriptVersion.ToString() + "\n"

                + "Supports Java Applets = " + browser.JavaApplets + "\n"

                + "Supports ActiveX Controls = " + browser.ActiveXControls

                      + "\n";

            TextBox1.Text = s;

        }

2016年6月29日 星期三

Javascript Window Resize

Javascript Window Resize

<script language="JavaScript" type="text/javascript">
        function changesize() {
            window.resizeTo(800, 600); //指定預開啟的寬度與高度
        }
        window.onload = changesize; //視窗載入時
        window.onresize = changesize; //視窗大小被拉動時
    </script>

2016年6月21日 星期二

CRM2011 Placeholder

CRM2011 Placeholder For IE 10 up




Javascript
function OnLoadForm(){

    document.getElementById("description").placeholder = "Description for opportunity";

    this.LoadCSS("/WebResources/style.css");

}




function LoadCSS(path) {

    var head = document.getElementsByTagName('head')[0];

    var link = document.createElement('link');

    link.rel = 'stylesheet';

    link.type = 'text/css';

    link.href = path;

    link.media = 'all';

    head.appendChild(link);

}


CSS
::-webkit-input-placeholder { /* Chrome/Opera/Safari */

  color: Gray;

}

::-moz-placeholder { /* Firefox 19+ */

  color: Gray;

}

:-ms-input-placeholder { /* IE 10+ */

  color: Gray;

}

:-moz-placeholder { /* Firefox 18- */

  color: Gray;

}

CRM2011 JavaScript Load up CSS file

CRM2011 JavaScript Load up CSS file



1.Attach the following code to the web resource






2.Add the function to the priority on-change and to form onload (Call the function in an existing onload)



function OnLoadForm(){

    this.LoadCSS("/WebResources/css_form_opportunity.css");

}



function LoadCSS(path) {

    var head = document.getElementsByTagName('head')[0];

    var link = document.createElement('link');

    link.rel = 'stylesheet';

    link.type = 'text/css';

    link.href = path;

    link.media = 'all';

    head.appendChild(link);

}




2016年6月13日 星期一

CRM2011 PluginRegistration Tool(Update Assembly)

CRM2011 PluginRegistration Tool(Update Assembly)



1.Select Assembly / Update



2. Select /Open DLL


3.Load Assembly / Select existing Assembly or new Assembly / Update Selected Plugins








CRM2011 PluginRegistration Tool(Register New Assembly)

CRM2011 PluginRegistration Tool(Register New Assembly)


1.Register / Register New Assembly




2.Browser/Open DLL 




3.Load Assembly/ Register Selected Plugins




CRM2011 Opportunity Alert Message on Close Won(Plugin)

CRM2011 Opportunity Alert Message on Close Won(Plugin)

PreWinOpportunity.cs

if (context.InputParameters.Contains("OpportunityClose") && context.InputParameters["OpportunityClose"] is Entity)

            {

                #region Throw Exception For Test

                //throw new InvalidPluginExecutionException("PreWinOpportunity - OpportunityCloseWon");

                #endregion



                var entity = (Entity)context.InputParameters["OpportunityClose"];



                if (entity.Attributes.Contains("opportunityid"))

                {

                    var opportunityId = ((EntityReference)entity.Attributes["opportunityid"]).Id;



                    var serviceFactory =

                     (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));



                    // Getting the service from the Organisation Service.

                    IOrganizationService crmService = serviceFactory.CreateOrganizationService(context.UserId);



                    Entity opportunity = crmService.Retrieve("opportunity", opportunityId, new ColumnSet(new string[] { "description" }));

                    if (!opportunity.Contains("description"))

                    {

                        throw new InvalidPluginExecutionException("You must provide a value for description.");

                    }

                    else

                    {

                        //throw new InvalidPluginExecutionException("none");

                    }

                }

                else

                {

                    throw new InvalidPluginExecutionException("none:opportunityid");

                }

            }

            else

            {

                throw new InvalidPluginExecutionException("none:PreWinOpportunity - OpportunityCloseWon");

            }

        }


PluginRegistration.exe



2016年6月2日 星期四

CRM2011 PluginRegistration Tool(Connect)

CRM2011 PluginRegistration Tool(Connect)

CRM Plugin登錄程式

1.Download Plugin Registration Tool
   https://www.microsoft.com/en-us/download/details.aspx?id=24004

2.Open PluginRegistration.exe
   C:\SDK\bin\PluginRegistration.exe

 


3.Connect CRM Server


4.double click Org Name Open


5. Your Plugins Assembly List












2016年4月7日 星期四

ASP.NET JavaScript in UpdatePanel

ASP.NET JavaScript in UpdatePanel

ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "", "alert('Alert Error Message.')", true);

2016年3月31日 星期四

Visual Studio 清除最近使用的專案紀錄

Visual Studio 清除最近使用的專案紀錄

1. 按 [Win視窗鍵] + R,出現 [執行] 視窗,輸入 regedit 按 Enter 鍵。 

2. 根據 Visual Studio 版本切換到對應的機碼 VS 2010 : HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\ProjectMRUList

 3.將右側的刪除

2016年3月21日 星期一

DataTable Merge 合併

DataTable Merge 合併


DataTable dt = new DataTable();
DataTable dt2 = new DataTable();
DataTable dt3 = new DataTable();

dt.PrimaryKey = new DataColumn[] { dt.Columns["oid"] }; //設定PrimaryKey可以去除重覆
dt.Merge(dt2,true);
dt.Merge(dt3,true);
Ref URL: https://msdn.microsoft.com/zh-tw/library/system.data.datatable.merge%28v=vs.110%29.aspx

ASP.NET SQL語法用in時,Parameters指令如何下

ASP.NET SQL語法用in時,Parameters指令如何下 本範例是為了找出主管所管轄之下的所有資料,故比較複雜,請直接看以下列數: 17,20,30,31,32,33,34,35,36,37,46,47

DataTable dt = new DataTable();
                SqlCommand cmd = new SqlCommand();
                StringBuilder sbSql = new StringBuilder();
                sbSql.AppendLine("SELECT * FROM " + VIEWNAME + " ");

                if (!string.IsNullOrEmpty(strKeyword))
                {
                    //sbSql.Append(" AND (name +batchnumber + jobtitles + CONVERT(varchar(30),joblevel) +  workingfunc + ogno + ogname + ouno + ouname + ename + status + CONVERT(varchar(30),cdt,120) like @strKeyword) ");
                    //select tblA.* from t_HRM_Evaluation tblA join dbo.FN_SPLIT_TBL('張,陳,王',',') tblB on tblA.name like '%'+tblB.Value+'%'
                    sbSql.Append(" JOIN dbo.FN_SPLIT_TBL(@strKeyword,',') tblB ON docno + patentcname + patentename + ogno + ogname + ouno + ouname + ouename + status + confirms + CONVERT(varchar(30),cdt,120) LIKE '%'+tblB.Value+'%' ");
                    cmd.Parameters.AddWithValue("@strKeyword", strKeyword);
                }

                sbSql.Append(" WHERE 1=1 ");
                sbSql.Append(" AND delete_flag=@delete_flag ");
                cmd.Parameters.AddWithValue("@delete_flag", delete_flag);
                sbSql.Append(" AND ouoid in (");


                int i = 1;
                if (dasgroup.IsManager(uoid, HRM.STATUS_LIST.ACTIVE, false, 400, 500) > 0)
                {
                    //找出該員所管轄部門
                    DataTable dtg = dasgroup.GetDataByLeader(HRM.STATUS_LIST.ACTIVE, false, uoid);
                    foreach (DataRow drg in dtg.Rows)
                    {
                        //找出部門下成員
                        Guid _goid = CUtility.StringToGuid(drg["oid"].ToString());
                        DataTable dtu = dasuser.GetChildDeptUser(_goid);
                        foreach (DataRow dru in dtu.Rows)
                        {
                            // IN clause
                            sbSql.Append("@UserId" + i.ToString() + ",");
                            // parameter
                            cmd.Parameters.AddWithValue("@UserId" + i.ToString(), CUtility.StringToGuid(dru["oid"].ToString()));
                            i++;
                        }
                    }
                }
                else
                {
                    sbSql.Append("@UserId" + i.ToString() + ",");
                    cmd.Parameters.AddWithValue("@UserId" + i.ToString(), uoid);
                }

                cmd.CommandText = sbSql.ToString();
                cmd.CommandText = cmd.CommandText.Remove(cmd.CommandText.Length - 1, 1) + ")";
               

                dt = sdp.GetDataTable(cmd);
                return dt;

Ref Url: https://dotblogs.com.tw/jeff-yeh/2008/09/05/5308

2016年3月15日 星期二

JavaScript 控制視窗大小

JavaScript 控制視窗大小


<script language="JavaScript" type="text/javascript">
        function changesize() {
            window.resizeTo(600, 400); //指定預開啟的寬度與高度
        }
        window.onload = changesize; //視窗載入時
        window.onresize = changesize; //視窗大小被拉動時
    </script>

2016年1月27日 星期三

SQL SELECT WHERE NOT EXISTS

SQL SELECT WHERE NOT EXISTS


找出t_SYS_User資料表中,與t_SYS_Group之間沒有相關連的資料

  SELECT * FROM (

 SELECT docno,name,ename,goid FROM t_SYS_User

  ) u
  WHERE NOT EXISTS (

      SELECT oid FROM t_SYS_Group

   WHERE oid=u.goid
  )

2016年1月6日 星期三

Searching in SQL Multiple Keyword in a Field

Searching in SQL Multiple Keyword in a Field


Filter: OR
string str = "john,jack,alton";

string select = "SELECT * FROM [TableName] WHERE [UserName] LIKE ''%' + REPLACE(str , ',' , '%'' OR [UserName] LIKE ''%') + '%''";


Filter: AND
string str = "john,jack,alton";

string select = "SELECT * FROM [TableName] WHERE [UserName] LIKE ''%' + REPLACE(str , ',' , '%'' AND [UserName] LIKE ''%') + '%''";


ref url:
http://forums.asp.net/t/1683482.aspx?Sql+query+to+search+database+with+multiple+keywords

2016年1月5日 星期二

MSSQL Update Select

MSSQL Update Select


UPDATE
    TableA
SET
    TableA.docno = TableB.docno,
    TableA.name = TableB.name
FROM
    TableB
WHERE TableA.id=TableB.id
;

MSSQL ROLLBACK & COMMIT

MSSQL ROLLBACK & COMMIT


ROLLBACK:
BEGIN TRANSACTION doUpdate

--do insert, update, delete

ROLLBACK TRANSACTION doUpdate


COMMIT:
BEGIN TRANSACTION doUpdate

--do insert, update, delete

COMMIT TRANSACTION doUpdate


ref:
https://msdn.microsoft.com/zh-tw/library/ms188929%28v=sql.120%29.aspx
https://msdn.microsoft.com/zh-tw/library/ms190295%28v=sql.120%29.aspx

2016年1月4日 星期一

若要允許使用 ASP.NET AJAX 從指令碼呼叫此 Web 服務

若要允許使用 ASP.NET AJAX 從指令碼呼叫此 Web 服務

// 若要允許使用 ASP.NET AJAX 從指令碼呼叫此 Web 服務,請取消註解下一行。
[System.Web.Script.Services.ScriptService]


Full Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace WebHRM.Service
{
    /// <summary>
    /// WebService1 的摘要描述
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允許使用 ASP.NET AJAX 從指令碼呼叫此 Web 服務,請取消註解下一行。
    [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld(string name)
        {
            return "Hello World" + name;
        }
    }
}