SHOWcode

2019年3月10日 星期日

C#.net Page_Load 前得知所按的BUTTON


C#.net Page_Load 前得知所按的BUTTON

參考:https://dotblogs.com.tw/jeff377/2008/03/17/1725

  protected void Page_Init(object sender, EventArgs e)
    {
        string strs1 = "";
        foreach (string str in Request.Form)
        {
            String ssss = str;
            Control c = Page.FindControl(str);
            if (c is Button)
            {
                Button imageb = (Button)c;
                strs1 += imageb.ID;
            }
        }
        string strs2 = strs1;

        if (strs1 == "Button1") {

            int xxx = int.Parse(Session["count"].ToString().Trim());
            int add_xxx = xxx + 1;
            Session["count"] = add_xxx.ToString().Trim();

            //Label3.Text = (int.Parse(Label3.Text.ToString().Trim()) + 1).ToString().Trim();
            Label3.Text = Session["count"].ToString().Trim();
        }

    }

2019年2月11日 星期一

MSSQL:使用SqlBulkCopy將資料批次寫入資料庫


MSSQL:使用SqlBulkCopy將資料批次寫入資料庫
原址:https://demo.tc/post/283
Oracle:https://blog.csdn.net/baidu_27474941/article/details/71709420

//一開始我們先產生一個DataTable來裝我們要寫入的資料
 DataTable dt = new DataTable();
 dt.Columns.Add("id", typeof(int));
 dt.Columns.Add("name", typeof(string));
 
 //因為SqlBulkCopy的猛就是大量的一次寫入,所以我們也來跑10萬筆吧
 int i;
 for (i = 0; i < 100000; i++)
 {
     DataRow dr = dt.NewRow();
     dr["name"] = i.ToString();
     dt.Rows.Add(dr);
 }
 
 //宣告連結字串
 SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ASPNETDBConnectionString1"].ConnectionString);
 
 conn.Open();
 //宣告SqlBulkCopy
 using (SqlBulkCopy sqlBC = new SqlBulkCopy(conn))
         {
             //設定一個批次量寫入多少筆資料
             sqlBC.BatchSize = 1000;
             //設定逾時的秒數
             sqlBC.BulkCopyTimeout = 60;
 
             //設定 NotifyAfter 屬性,以便在每複製 10000 個資料列至資料表後,呼叫事件處理常式。
             sqlBC.NotifyAfter = 10000;
             sqlBC.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
 
             //設定要寫入的資料庫
             sqlBC.DestinationTableName = "dbo.Table1";
              
             //對應資料行
             sqlBC.ColumnMappings.Add("id", "id");
             sqlBC.ColumnMappings.Add("name", "name");
 
             //開始寫入
             sqlBC.WriteToServer(dt);
         }
         conn.Dispose();
 }
 void OnSqlRowsCopied(object sender, SqlRowsCopiedEventArgs e)
 {
     Response.Write("---<br/>");
 } 

2019年2月10日 星期日

將字串轉換成Html編碼 /解碼 字串

摘要:將字串轉換成Html編碼 /解碼 字串
System.Web.HttpUtility.HtmlEncode(txtBox.Text);
System.Web.HttpUtility.HtmlDecode(txtBox.Text);

2018年12月9日 星期日

C# ENTER 防呆

<form id="form1" runat="server" onkeypress="if (window.event.keyCode==13) return false;">
..
.
.
.
</form>

C# 正規 紀錄


public static bool isMatchNumber(string str)
    {
        return Regex.IsMatch(str, @"(^([0-9]*|\d*\d{1}?\d*)$)");
    }

2018年11月8日 星期四

C# ajax 範例


C#.net ajax 範例


  <asp:ScriptManager ID="ScriptManager" runat="server" />
    <asp:UpdatePanel ID="UpdatePanel2"  UpdateMode="Conditional" runat="server" >
    <ContentTemplate>
       <fieldset>
       <legend>UpdatePanel content</legend>
        <!-- Other content in the panel. -->
           <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
           <table style="width: 1024px" align="center" >
                    <tr>
                        <td>
                 <nobr>
                <table class="table table-bordered" id="maintable" rules="ALL" class="table" style="width: 100%; max-width: 1024px; border-color: black;" align="center">
                      <tr style=" display: none;">
                       <td style="width: 10%;"></td>
                        <td style="width: 10%;"></td>
                         <td style="width: 10%;"></td>
                         <td style="width: 10%;"></td>
                         <td style="width: 10%;"></td>
                        <td style="width: 10%;"></td>
                         <td style="width: 10%;"></td>
                         <td style="width: 10%;"></td>
                         <td style="width: 10%;"></td>
                         <td style="width: 10%;"></td>

                    </tr>
<asp:Label ID="Label2" runat="server" ></asp:Label>
                     </table>
                        </td>
                        </tr>

                    </table>

           <input type="checkbox" checked="checked" />
           <input id="ch" type="checkbox"  />
           <input type="checkbox" checked="checked" />
           <asp:TextBox ID="TextBox23" runat="server"></asp:TextBox>
           <asp:Button ID="Button2" runat="server" Text="Button"/>
           <iframe id="iframesun" runat="server" style="width:100%;height:944px"></iframe>
        </fieldset>
    </ContentTemplate>
</asp:UpdatePanel>

2018年10月30日 星期二

ASP.NET TextBox控制項設置ReadOnly="true"後臺取不到值


原文連結

ASP.NET TextBox控制項設置ReadOnly="true"後臺取不到值

當TextBox設置了ReadOnly="true" 後,要是在前臺為控制項添加了值,後臺是取不到的,值為「空」
原理沒想通,說不清楚微軟是出於什麼考慮的,
不過有時是要我們能通過前臺腳本來填充值,並不希望使用者修改其控制項內容,這時就比較尷尬了。
剛開始是換成Html 裡的 <input type="text" readonly="readonly" > ,不過後來發現這個工作量是很大的,
所以網上搜了下,沒找出TextBox ReadOnly="true" 頁面填充值取不到的原因,不過問題還算解決了。
正文:
出於vs2005對頁面代碼的規範與安全,個人意見是使用第二種方法
知道為什麼TextBox設置了ReadOnly屬性後,取不到值原理的,給下說明,謝謝啦!
在.NET 2.0 下,當頁面上的某個TextBox 設置了屬性ReadOnly="True"時,通過用戶端腳本給其賦值後,在後臺代碼中訪問其Text屬性卻無法獲得該值。經過嘗試,發現可以通過如下的方式解決這個問題:

方法一:
不設置ReadOnly屬性,通過onfocus=this.blur()來類比,如下:
<asp:TextBox ID="TextBox1" runat="server" onfocus=this.blur()></asp:TextBox>
在此情況下,當文字方塊獲得焦點時便立刻失去,所以也無法手動修改其內容,能夠類比ReadOnly,在後臺代碼中也能通過Text屬性,正常獲取通過腳本在用戶端設置的值;

方法二:
設置了ReadOnly屬性後,通過Request來取值,如下:
前臺代碼:
<asp:TextBox ID="TextBox1" runat="server" ReadOnly="True" ></asp:TextBox>
後臺代碼:
string Text = Request.Form["TextBox1"].Trim();

方法三:
在Page_Load()正設置文字方塊的唯讀屬性,在前臺不設置。
就能正常讀取,如下:

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
TextBox1.Attributes.Add("readonly","true");
}
}

2018年10月2日 星期二

C# 取得檔案最後修改時間



  foreach (string fname in System.IO.Directory.GetFileSystemEntries(@"C:\Users\joshs"))
            {
                //if (fname.IndexOf(".gif") > 0) {
                //MessageBox.Show("檔案建立日期" + fname.ToString(), "FileInfo");
                //     MessageBox.Show("檔案建立日期" + fname.ToString(), "FileInfo");
                //}

                MessageBox.Show("檔案最後修改時間:" + File.GetLastWriteTime(fname).ToString());

            }

2018年10月1日 星期一

字串 取值方法(第二階段) Class 取得 C#.NET 控制項


字串 取值方法(第二階段) 先在在 其他NET 建置laceHolder


#region BUTTON
    protected void lbtn_Click(object sender, EventArgs e)
    {
        Page page = (Page)System.Web.HttpContext.Current.Handler; //Page 給 class  這是重點

        Button lbtn = (Button)sender;
        String buttonid = lbtn.ID.ToString();//button 按鈕ID
       
        Label labtn = (Label)page.FindControl("lb_func2");  //取得控項
        TextBox txttn = (TextBox)page.FindControl("txt_func2");
       

       String mail_check = fun_sg_mail();  //

        if (mail_check == "success") {
            page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", "alert('信件寄出');", true);
        }
        else {
            page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", "alert('通報信件尚未寄出,麻煩幫忙管理員,謝謝');", true);
        }


    }
#endregion


字串 調用方法(第一階段)


  public static object callFunc(string funcName)
    {
        //反射獲取 命名空間+類名稱
//using System.Reflection;
        String TXSR = funcName;
        string className = "activefuction";
        string methodName = funcName;            //傳遞参数           
                                                 // Object[] paras = new Object[] { "string" };
        var t = Type.GetType(className);
        object obj = Activator.CreateInstance(t);
        try
        {
            #region 方法一                //直接调用               
            MethodInfo method = t.GetMethod(methodName);
            //method.Invoke(obj, paras);

            return method.Invoke(obj, null);

            // return method.Invoke(obj, null);
            #endregion

            #region 方法二               
            //MethodInfo[] info = t.GetMethods();
            //for (int i = 0; i < info.Length; i++)
            //{
            //    var md = info[i];                    //方法名                   
            //    string mothodName = md.Name;                    //参数集合                 
            //    ParameterInfo[] paramInfos = md.GetParameters();                    //方法名相同且參數個數一樣                 
            //    if (mothodName == methodName && paramInfos.Length == paras.Length)
            //    {
            //        md.Invoke(obj, paras);
            //    }
            //}
            #endregion

        }
        catch (Exception ex)
        {
            throw ex;
        }


    }


    #endregion

Jenkins-mail

參考:http://www.linuxea.com/1767.html 前置作業略過~有空再補 Mailer Plugin post { success { emailext ( subject: ...