2012年8月30日 星期四

如何清除Facebook 分享產生的catch


最近快要上線的網站, 有個新功能. 就是Facebook分享!
對! 分享連結出去到個人的FB裡.   很簡單的功能! 

但是Facebook 好聰明.把分享出去的meta data 給記下來了!!
只要有第一個人分享過. 對... 之後再連同網址的人分享. 也是像下圖錯的訊息



還好找到方法
只要到這個網址
https://developers.facebook.com/tools/debug


在上面輸入分享的連結. 就可以讓Facebook 重新抓取了!!
還好找到這個工具..

不然上線就慘了!

2012年6月11日 星期一

__dopostback 套 masterpage 不work

上週請同事教我用colorbox , 想要做的事情很簡單.
跳出一個視窗, 讓使用者選擇個選項後. 就依使用者選的選項.來做導頁的動作.

很簡單的事, 就碰上的莫非
用了一個linkbutton , 後端cs  寫導頁.
colorbox closed 的事件 , function 是呼叫postback 事件.





id="ctl00_ContentPlaceHolder1_LinkButton1" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$LinkButton1','')"





因為知道有套Master page , 也知道Browser 會編過id,
我們也把呼叫物件的[LinkButton1]改成了[ctl00_ContentPlaceHolder1_LinkButton1]
 
誰知道Browser把呼叫的doPostBack 物件名稱 改為'ctl00$ContentPlaceHolder1$LinkButton1'
 
把function 中的呼叫名稱. 改為'ctl00$ContentPlaceHolder1$LinkButton1' 就可以了.(泣)
 
前端呼叫colorbox function如下:
function DoNew(link, ht) {


$.colorbox(

{ href: link,

iframe: true,

width: "80%",

height: "80%",

transition: "none",

opacity: "0.5",

width: "500px", height: ht,

innerWidth: "500px",

//onClosed: function () { location.reload(true); },

onClosed: function () { __doPostBack('ctl00$ContentPlaceHolder1$LinkButton1', ''); },

overlayClose: false

});

}
這Bug花了我二天時間. 一定要寫一下記下來!

2012年2月20日 星期一

C# & VB 程式碼互轉功能網站


下面網址有提供C#與VB互轉的功能,希望可以一勞永逸解決您的問題..

這網站真是不錯啊. 能幫上我這呆呆的人

Gridview 轉成excel

好久沒寫程式了. 開始斷斷續續的練功中.
昨天為了找一個excel匯出的東西. 試了一下, 一直有問題.
1.先參考下面的程式   
引用 網綕
http://www.wretch.cc/blog/genius0207/9646786




1.
好久沒寫電腦相關的東西了...../__\

ASP.Net匯出Excel檔        

1.新增按鈕,連點二下後進入.cs檔(程式碼)

2.在_click事件中貼上程式碼
       
private void btnProduceExcel_Click(object sender, System.EventArgs e)
 {        
        //產生的時間
        string ProduceTime = System.DateTime.Now.ToString("yyyy-MM-dd_HHmm");
        //從緩衝區清除所有內容輸出
        Response.Clear();
        
        //可以引入二個參數:("要加入 value 的 HTTP 標頭的名稱"," 要加入至標頭的字串"),也就是excel的檔名  
        Response.AddHeader("content-disposition", "attachment;filename=" + "" + ProduceTime + ".xls");
                         
        //設定輸出資料流的 HTTP MIME 類型
        Response.ContentType = "application/vnd.ms-excel";

        //取得或設定輸出資料流的 HTTP 字元集,輸出的excel出現亂碼時,可設定成"big5"
        Response.Charset = "";
        System.IO.StringWriter sw = new System.IO.StringWriter(); //宣告一個來裝文字(應該是喔~~)
        //宣告htw --> 將標記字元及文字寫入 ASP.NET 伺服器控制項輸出的資料流     
        System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw); 
           
        //新增一行標題  (將資料寫入 HtmlTextWriter 輸出資料流,後面接著行結束字元字串)        
        htw.WriteLine("excel內容---表格標題)");
         
        // dgInput是我在.aspx設置的一個datagrid 
        //將DataTable dtinput送給CreateTotalTable()接收資料庫資料後,指定給dginput 
        dgInput.DataSource = CreateTotalTable(dtInput);                      
         
        // dgInput為格式+資料,將 dgInput寫入htw裡。 (.RenderControl()-->將伺服器控制項內容輸出到提供的 HtmlTextWriter 物件)                  
        dgInput.RenderControl(htw);                      

        Response.Write(sw.ToString().Replace("
", "").Replace("
",""));//將資訊寫入 HTTP 回應輸出資料流。
        Response.End();//將目前所有受緩衝的輸出傳送到用戶端、停止網頁的執行,並引發 EndRequest 事件。 
}

找不到當初參考的頁面了QQ


2.出現  解決GridView使用RenderControl取得HTML出現的問題
  
又只好參考這個網頁. 就先解決了我寫程式的問題. 有時快和彈性.會被需求而忽略
http://www.dotblogs.com.tw/topcat/archive/2008/03/14/1336.aspx

如果想在CodeFile中取得GridView結果的HTML內容,首先會遇到這樣的錯誤訊息:
型別 'GridView' 的控制項 'GridView1' 必須置於有 runat=server 的表單標記之中。
這個問題,可以在您的CodeFile中加入以下這段來解決
    Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
        '處理'GridView' 的控制項 'GridView' 必須置於有 runat=server 的表單標記之中
    End Sub
如果您的GridView沒有設定分頁,應該就可以正常的執行了。但是如果有設定分頁,很快的又遇到了另外一個問題!出現以下的錯誤訊息:
RegisterForEventValidation 只能在 Render(); 期間呼叫
這個問題,可以設定aspx原始檔中<%Page%>的以下兩個設定解決
EnableEventValidation = "false" AutoEventWireup="true"

這樣的應用可以用再需要把資料庫的資料透過EMail寄送給使用者,如果自己組HTML語法是很累人的事情,可以透過這個方式,使用GridView產生HTML然後透過Email寄出
關於如何寄送EMail請參考以下這篇: