2013年9月26日 星期四

C# Regex.Replace 刪除Html字串

 其實查了很多Regex.Replace 的資料

但到最後還是搞不太清楚他裡面的亂碼在做什麼

只好拿別人已經寫好的東西來拼湊用一用

string[] reserve = { "EM" };

string content = Regex.Replace(content, String.Format("<(?!{0}).*?>", string.Join("", reserve)), String.Empty);

陣列reserve裡面所放的是要保留的Html語法字串

若想要一個都不留的話

我在這裡都用一個偷吃步的方法

直接在reserve裡面下一個根本不會出現的詞彙

這樣Html語法就可以被削的乾乾淨淨了

content是要進行字串處理的字串

引用自:http://www.dotblogs.com.tw/hunterpo/archive/2010/11/26/19732.aspx

C# 文字 寫入 TXT

        StreamWriter sw = new StreamWriter(@"C:\Users\cody\Documents\1.txt");
        sw.WriteLine("abc");
        sw.Close();

記得先創好檔案路徑

還有要

Using System.IO;

Resource interpreted as Image but transferred with MIME type application/octet-stream:

如果使用VS2010開發ASP.NET 
當你有使用到文件檔中的PNG圖片時
很有可能會出現以下的錯誤訊息
Resource interpreted as Image but transferred with MIME type application/octet-stream:
這是因為使用了VS的IIS所導致
但並不知道程式會受到什麼影響
解決方法就將此網頁直接價在本台主機的IIS上就不會有此錯誤產生

2013年9月23日 星期一

Html 傳值的幾種方式

簡單介紹一下Html傳值得幾種寫法 ,網頁大致來分有兩種傳值方式 "Get" 和 "Post"

先從 "Post" 部分開始介紹:

        <form id="Post" method="post"> 
            <input type="text" runat="server" id="Data"> 
            <input id="button1" type="button" value= "java" onclick="post();" runat="server"> 
        </form>

        <script language="javascript">
            function post() {
                Post.action = "NextPage.aspx";
                Post.submit();
            } 
        </script>

接值頁面

string data=Request.Form["Data"].ToString();

另一種不用Javascript 使用Name 來接值的方式

            <form  method="POST" action="NextPage.aspx"> 
   <p><input type="text" name="Textbox"></p> 
   <p><input type="submit" value="確定" name="submit2"></p> 
   </form> 

接值頁面

 string a = Request.Form["Textbox"].ToString();

使用 "Get" 方式

            string id=123;
            string passwod=123;
         
            Response.Redirect("NextPage.aspx?id=" + id + "&password=" + password);

接值頁面

            string id=Request.QueryString[" id"].ToString();
            string password=Request.QueryString[" password"].ToString();

另一種用 " Get" 接值的方式

<select id="childrenValue" name="childrenValue">
                             <%= childrenValue %>
                        </select>

<input id="Button1" type="button" value="123" onclick="htmlchange()"  />

 function htmlchange() {

//childrenValue 為下拉式選單

        if ($("#childrenValue").val() == "請選擇") {
            alert("尚未選擇結點");
        }
        else {
            window.location.href = "Management/Node/CreateNewLevel.aspx?childrenValue=" + $("#childrenValue").val();
        }

    }

接值頁面

 ParentIdLabel.Text = Request.QueryString["childrenValue"];

在這邊可以注意到 "Post" 的接值方式是使用 Request.Form "Get" 是使用 Request.QueryString

那如果遇到本頁的後端想要拿到本頁前端的某一個 input type = text 要怎麼辦呢?

<input type="text" name="TextBox" value="123">

那本頁後端就可以直接使用name的變數來抓取(注意不是使用Id)

 string id = Request["TextBox"];


2013年9月11日 星期三

C# DataTable 使用方式

    public class takefile
    {
        SqlConnection conn = new SqlConnection("server = 127.0.0.1 ; database = LWS; uid = sa ; pwd = sa");
        SqlCommand cmd = new SqlCommand();

        public string[] takefilename(string filename)
        {
            //takefileBean takefilebean = new takefileBean();
            conn.Open();
            cmd.Connection = conn;
            cmd.CommandText = "SELECT _id, APP FROM " + filename ;

            //cmd.Parameters.Clear();
            //cmd.Parameters.AddWithValue("@filename", filename);
            SqlDataAdapter sd = new SqlDataAdapter(cmd.CommandText, conn);
            DataTable dt = new DataTable();
            sd.Fill(dt);

            string[] takefilename = new string[dt.Rows.Count];

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                takefilename[i] = dt.Rows[i][0].ToString() + "|" + dt.Rows[i][1].ToString();
            }

            conn.Close();
            return takefilename;
        }

       可以看到SqlDataAdapter會將讀到的資料全部放在DataTable中

       之後的dt.Rows[i][0].ToString()第一個[]代表Row為資料的筆數

       第二個[]代表Column為資料的欄位

       簡單來說今天我們只從資料庫領取ID這個欄位

       所以Column的欄位數只有1  所以在這裡永遠為0

       如果今天我們從資料庫再多領取Datetime不同的資料

       欄位數請自己往上計算    先領取的會再比較前面的欄位

       Row的欄位數則是看你的資料庫存有幾筆資料而定

       最後回傳一個二維的陣列出來

C# 運用字串進行切割

字串.ToString().Split(new string[] { "@;@" , "12" }, StringSplitOptions.RemoveEmptyEntries);

運用此方法可以進行自串的判斷切割  " " 裡面是要進行切的字串  運用數個切割可以確保一定

切到你想要的字串  最後StringSplitOptions.RemoveEmptyEntries可以把切出來的空格直接刪除

C# ASP Calendar 行事曆 紀錄某日日期事件方式

public partial class TestPage : System.Web.UI.Page

{

    List<ScheduleEvent> lst;
    public class ScheduleEvent
    {

        public string EventName;
        public DateTime Date;
        public Color EventColor;
     

    }

    protected override void OnLoad(EventArgs e)

    {

        base.OnLoad(e);

        //loading my list with some sample events.

        lst = new List<ScheduleEvent>();

        lst.Add(new ScheduleEvent {

            Date = new DateTime(2011, 5, 17),

            EventColor = Color.Lime,

            EventName = "Arun's BirthDay" });

        lst.Add(new ScheduleEvent {

            Date = new DateTime(2011, 5, 31),

            EventColor = Color.Red,

            EventName = "Rohan's BirthDay" });

        //Register day

        Calendar1.DayRender += new DayRenderEventHandler(Calendar1_DayRender);

    }

    void Calendar1_DayRender(object sender, DayRenderEventArgs e)

    {

        var item=lst.Where(evnt => evnt.Date.Date.Equals(e.Day.Date)).FirstOrDefault();

        if(item!=null)

        {

            e.Cell.BackColor = item.EventColor;

            e.Cell.ToolTip =  item.EventName;
            e.Cell.Text = "<a href=" + e.SelectUrl + ">" + e.Day.DayNumberText + "</a>";  //調整滑鼠移到上方所顯示的內容

        }

    }

}
    用此方式可以讓Asp行事曆裡面的元件更改你所紀錄日期的背景 底色  自體 或顯示的字樣
    下列網址是Calendar屬性更改的參考網頁
    http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.calendar_properties.aspx