TOP

[C#]GridView不使用SQLDataSource取得資料且分頁

手上的案子因為使用API取得資料來源,所以無法使用精靈或是SQL語法取得資料來源。
因此需要在不使用SQLDataSource精靈的方式完成GridView的資料分頁
1.先從ToolBox內的Data將GridView連至ASPX的網頁上。

2.在Properties內將AllowPaging設定為True,PageSize為每頁要顯示幾筆資料。



3.在Events內將點擊PageIndexChanging,加入程式碼。

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        GridView1.DataSource = GetSource();
        GridView1.DataBind();
    }





 GetSource()為資料來源




TOP

[C#]隱藏GridView欄位

隱藏GridView欄位的方法:



    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        //隱藏標題行


        if ( e.Row.RowType == DataControlRowType.Header)
        {
          e.Row.Cells[0].Visible = false;
        }


        //隱藏資料欄位

        if (e.Row.RowType == DataControlRowType.DataRow)
        {
           e.Row.Cells[0].Visible = false;
        }

    }



TOP

[C#]DataSet 欄位及資料行的屬性使用方式

DataSet 欄位及資料行的屬性使用方式

AllowDBNull 取得或設定值,指出對於屬於資料表的資料列而言,這個資料行中是否允許 Null 值。
AutoIncrement取得或設定值,指出對於加入至資料表的新資料列而言,該資料行是否自動遞增資料行的值。
Caption 取得或設定資料行的標題。
ColumnName取得或設定在 DataColumnCollection 中的資料行名稱。
DataType 取得或設定儲存在資料行中的資料型別。
DefaultValue在建立新資料列時,取得或設定資料行的預設值。
MaxLength取得或設定文字資料行的最大長度。
Ordinal取得在 DataColumnCollection 集合中的資料行位置。
ReadOnly取得或設定值,指出是否資料列一加入至資料表,就允許變更資料行。
Unique取得或設定值,指出在資料行之每個資料列中的值是否必須是唯一的。

範例語法:
s = s.Replace("__範例1__", ""+ds.Tables["t"].Columns[i].ColumnName );
s = s.Replace("__範例2__", ""+ds.Tables["t"].Columns[i].DataType );

全部讀出欄位名稱:
string 暫存= "";
foreach (DataColumn Columns in ds.Tables["t"].Columns)
{
暫存 = 暫存 + Columns.ColumnName + "," ;

}

資料來源:http://note.jhpeng.com/2008/05/c_7734.html 


DataSet 取值

DataSet.Table[0].Rows[ i ][ j ]
其中 i 代表第 i 行數, j 代表第 j 列數

DataSet行數

DataSet.Table[0].Rows[ i ].ItemArray[ j ]
其中 i 代表第 i 行數, j 代表第 j 列數

DataSet列數

DataSet.Tables[0].Columns.Count
取得表的總列數

DataSet總行數 


DataSet.Tables[0].Rows.Count
取得表的總行數

DataSet中取出特定值

DataSet.Tables[0].Columns[ i ].ToString()
取得表的 i 列名


TOP

[C#] 在C# codebehind執行JavaScript

問題:因為程式取得在Codebehind內取得JavaScript,而且還要在Codebehind內執行此段JavaScript的function


  • Page.ClientScript.RegisterClientScriptBlock
  • Page.ClientScript.RegisterStartupScript
  • Page.ClientScript.RegisterClientScriptInclude
string Script=@”function ShowName() 
var txt=document.getElementById(‘txtName’);
 alert(‘Your name is: ‘+txt.value);
 }”;

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), “ShowName”, Script, true);


參考資料 :
http://blog.mdsohelrana.com/2008/06/14/how-to-add-javascript-at-runtime-using-c-in-aspnet-20/




另外一種方式是Codebehind呼叫前端的JavaScript


A.aspx
<script type="text/javascript">
   
    function Popup(msg)
    {
        alert('訊息視窗 = ' + msg);
    }

</script>

A.aspx.cs
Page.RegisterStartupScript("Show", "<script language=JavaScript>Popup('"+字串+"');</script>");



參考資料 :

http://www.dotblogs.com.tw/aquarius6913/archive/2010/11/09/19310.aspx


TOP

[C#]多國語系補充 GlobalResources vs LocalResources

問題:
從Java派的系統內取得的Culture資料,但Culture無法直接轉換使用,但在C#或ASP.NET裡面Culture又不能只用義大利語「 it」或日語「ja」,需要使用義大利語「 it-IT」或日語「ja-JP
並且要特別注意Java派使用「_」,C#跟ASP.NET是使用「-」

解決方式:


CultureInfo culture = new CultureInfo(LoginUserInfo.IdentityInfo.language.Replace("_", "-"));

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(CultureInfo.CurrentUICulture.IetfLanguageTag);

CultureInfo newculture = CultureInfo.CreateSpecificCulture(CultureInfo.CurrentUICulture.IetfLanguageTag);

Thread.CurrentThread.CurrentUICulture = new CultureInfo(newculture.ToString());

參考資料:http://mobile.dotblogs.com.tw/alonstar/archive/09/08/5319.aspx
TOP

[C#]在js檔內取得c#的變數

問題:現在接手的專案用jQuery來做留言的字數限制及判斷,且到達上限時會發送alert的訊息,但目前專案要將他改為多國語系的方式,所以一定要傳送GlobalResource或是LocalResources的變數值。

解決的方式:
1.在usercontrols的檔案內(ascx檔案內)增加javascript

         <script language="javascript" type="text/javascript">

            var data =
            {
                alert: "<%=GetLocalResourceObject("jQueryalert").ToString()%>",              
            };                    
         </script>


2.在js的檔案內改為


var settings = jQuery.extend(
{
    //原本是寫死的文字
//alertText: "You have typed too many characters.", // Text in the alert message
   //改為變數取得文字
alertText: data.alert, // Text in the alert message
}, options );


參考資料:http://sls.weco.net/blog/shortlin/11-1%E6%9C%88-2012/16971
TOP

[ASP.NET] 強制使用者使用特定的多國語系

續前篇多國語系的設定方式

前篇說明了如何設定多國語系的方式,但還有另外一個方法就是利用程式強制限制使用者的語系

Ex:

(1)zh-TW 為繁體中文
(2)

VB.NET方式
Protected Overrides Sub InitializeCulture()

    System.Threading.Thread.CurrentThread.CurrentUICulture = New System.Globalization.CultureInfo("zh-TW")

End Sub

(3)
C#方式
    protected override void InitializeCulture()
    {

            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("zh-TW");
            Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-TW");
     }


參考資料:
http://kelp.phate.org/2011/10/getglobalresourceobject.html

TOP

[C#]在OnClientClick時使用多國語系的方法

依前篇在ASP.NET使用多國語系都是使用App_GlobalResources及App_LocalResources這兩種方式
這次在C#專案內全部使用App_GlobalResources的方法呈現所有的多國語系

一般在ASPX內取得多國語系資料的方法有兩種
1.<%$ Resources:多國語系檔案名稱, 屬性名稱 %>
2.<%=GetGlobalResourceObject("多國語系檔案名稱", "屬性名稱").ToString()%>

這次遇到當使用LinkButton並且又要使用OnClientClick="return confirm('Finish');"
這種確認的跳出視窗時,以上兩種方法都沒有辨法使用!!

解決方式:
增加一個Message來記錄要使用的多國語系文字,再用getAttribute取得就可以。
Ex:
<asp:LinkButton ID="btnDel" delmessage="<%$ Resources:Salesforce, Delete_Program %>"  OnClientClick='return confirm(this.getAttribute("delmessage"))'

參考資料:
http://forums.asp.net/t/1094986.aspx/1