extnet-blog
extnet-blog
Ext.Net 技術分享 教學 Taiwan
17 posts
我使用Ext.Net大約半年的時間。。把我學到的分享給大家使用,如有任何問題也可提出與我一起討論
Don't wanna be here? Send us removal request.
extnet-blog · 13 years ago
Video
tumblr
[Ext.Net]實務影音範例說明 4/4
說明內容:功能表開窗→查詢表→Master Detail
0 notes
extnet-blog · 13 years ago
Video
tumblr
[Ext.Net]實務影音範例說明 3/4
說明內容:功能表使用說明→編輯我的最愛
0 notes
extnet-blog · 13 years ago
Video
tumblr
[Ext.Net]實務影音範例說明 2/4
說明內容:首頁Portal→區塊增減→欄位樣式調整
0 notes
extnet-blog · 13 years ago
Video
tumblr
[Ext.Net]實務範例影音說明 1/4
說明內容:登入→表頭佈景切換→通知
0 notes
extnet-blog · 13 years ago
Text
[Ext.Net]實務範例
這個網址是我使用Ext.Net實做出來的
http://122.146.104.17  
帳號: demo
密碼: 12345
Tumblr media
功能如下:
1.首頁使用Portal
  管理者可自訂樣版給user使用
  在首頁tab旁的小按紐-user可選擇顯示樣示,3欄、2欄..,內容區塊使用者也可以自己增減
2.右上角主題切換,有灰色、藍色、黑色ext.net的基本樣版
3.我的最愛,可讓user從工作執掌選自已常用的功能做成自己的選單
4.通知功能可由系統發出,也可由user發出給其他user
5.點選右邊menu的子節點,可開窗帶出程式。
  (1)一般查詢。
  (2)Master-Detail
接下來我會放上影音檔做詳細的介紹。
0 notes
extnet-blog · 13 years ago
Text
[Ext.Net]官方範例
官方有很多範例可以參考
http://examples.ext.net/
Tumblr media
↓點到內容頁後,還可以點source看原始碼,相當方便
Tumblr media
0 notes
extnet-blog · 13 years ago
Text
[Ext.Net]GridPanel使用Datatable當DataSource
Tumblr media
[程式碼如下:
<%@ Page Language="C#" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %> <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { if (!X.IsAjaxRequest) { this.refreshdata(); } } protected void query_Click(object sender, DirectEventArgs e)  //查詢(Q) { refreshdata(); } protected void refreshdata() //自寫function,主要為查詢用 { string sDbConnStr, sSql; sDbConnStr = "Provider=OraOLEDB.Oracle.1;Password=12345;Persist Security Info=True;User ID=user_id;Data Source=DbSource"; sSql = "select TT1,TT2,TT3,TT4,TT5 from TEST"; OleDbDataAdapter myadp = new OleDbDataAdapter(sSql, sDbConnStr); DataSet myDataSet=new DataSet(); myadp.Fill(myDataSet); DataTable mytable = myDataSet.Tables[0]; myDataSet.Dispose(); if (mytable != null) { if (mytable.Rows.Count > 0) { this.Store2.DataSource = mytable; this.Store2.DataBind(); } } else { X.Msg.Alert("提示訊息", "查詢筆數為0!").Show(); } } protected void GridPanel_Refresh(object sender, StoreReadDataEventArgs e) //GridPanel 更新按紐 { refreshdata(); } </script> <head id="Head1" runat="server"> </head> <body> <form id="form1" runat="server"> <ext:ResourceManager ID="ResourceManager1" runat="server" /> <ext:Viewport ID="Viewport1" runat="server" Layout="Fit"> <Items> <ext:Panel ID="Panel1" runat="server" Header="false" Border="false" Padding="0" Layout="Fit"> <Items> <ext:Panel ID="Panel2"                             runat="server"                             Frame="True"                             BodyStyle="10px 5px 5px;"                             Layout="Fit"> <TopBar> <ext:Toolbar ID="Toolbar1" runat="server"> <Items> <ext:Button ID="bt_query" runat="server" Text="_Query" Icon="Accept"> <DirectEvents> <Click OnEvent="query_Click"> <EventMask ShowMask="True" Msg="_Querying_please_wait" MinDelay="500" /> </Click> </DirectEvents> </ext:Button> <ext:ToolbarFill ID="ToolbarFill1" runat="server" /> </Items> </ext:Toolbar> </TopBar> <Items> <ext:Panel ID="Panel3" runat="server" BaseCls="x-plain" Border="true" Layout="Absolute"> <Items > <ext:GridPanel ID="GridPanel1" runat="server" Region ="North" X="0" Y="10" Height="500"> <Store> <ext:Store ID="Store2" runat="server" SerializationMode="Complex" OnReadData="GridPanel_Refresh" PageSize="10"> <Model> <ext:Model ID="Model1" runat="server" IDProperty="TT1"> <Fields> <ext:ModelField runat ="server" Name="TT1" /> <ext:ModelField runat ="server" Name="TT2" /> <ext:ModelField runat ="server" Name="TT3" /> <ext:ModelField runat ="server" Name="TT4" /> <ext:ModelField runat ="server" Name="TT5" /> </Fields> </ext:Model> </Model> </ext:Store> </Store> <ColumnModel ID="ColumnModel1" runat="server"> <Columns> <ext:Column ID="Column1" runat ="server" Text="_TT1" DataIndex="TT1" /> <ext:Column ID="Column2" runat ="server" Text="_TT2" DataIndex="TT2" /> <ext:Column ID="Column3" runat ="server" Text="_TT3" DataIndex="TT3" /> <ext:Column ID="Column4" runat ="server" Text="_TT4" DataIndex="TT4" /> <ext:Column ID="Column5" runat ="server" Text="_TT5" DataIndex="TT5" /> </Columns> </ColumnModel> <BottomBar> <%--<ext:PagingToolbar ID="PagingToolbar1" runat="server" PageSize ="10">                                                  </ext:PagingToolbar>--%> <ext:PagingToolbar ID="PagingToolbar1" runat="server"> <Items> <ext:Label ID="Label2" runat="server" Text="Page size:" /> <ext:ToolbarSpacer ID="ToolbarSpacer1" runat="server" Width="10" /> <ext:ComboBox ID="ComboBox1" runat="server" Width="80"> <Items> <ext:ListItem Text="1" /> <ext:ListItem Text="2" /> <ext:ListItem Text="10" /> <ext:ListItem Text="20" /> </Items> <SelectedItems> <ext:ListItem Value="10" /> </SelectedItems> <Listeners> <Select Handler="#{GridPanel1}.store.pageSize = parseInt(this.getValue(), 10); #{GridPanel1}.store.load();" /> </Listeners> </ext:ComboBox> </Items> <Plugins> <ext:ProgressBarPager ID="ProgressBarPager1" runat="server" /> </Plugins> </ext:PagingToolbar> </BottomBar> <SelectionModel> <ext:RowSelectionModel ID="RowSelectionModel2" runat="server" Mode="Single"/> </SelectionModel> </ext:GridPanel> </Items> </ext:Panel> </Items> </ext:Panel> </Items> </ext:Panel> </Items> </ext:Viewport> </form> </body> </html>
0 notes
extnet-blog · 13 years ago
Text
ASP.NET頁面繼承方法(避免每頁Page_Load執行相同程式碼)
相信有人網頁寫久了,會發現在每頁Page_Load都執行相同的程式碼
可能有權限檢查、語言切換、寫Log等程序
我之以前也是這樣子寫,後來在網路上看到繼承頁面的概念
使用頁面繼承的話,這樣日後要維護也會方便很多,只要改你的底層頁面就可以了
延續上一個多國語言切換教學,如果每一頁都要下語言切換的code,日後就會不好維護
Tumblr media
首先在App_Code資料夾建立一個BasePage.cs,如下
using System; using System.Collections.Generic; using System.Web; public class BasePage : System.Web.UI.Page { protected override void OnLoad(EventArgs e) { //想要在每頁做檢查的可以在此作業 UdfSet.Language_recource(Page, Session["lang"].ToString()); //這行一定要,它才會override base.OnLoad(e); } }
↓增加一個Login.aspx,登入時寫入session
--Login.aspx-----start--------------------------------------------------
<%@ Page Language="C#" %>
<%@ Register assembly="Ext.Net" namespace="Ext.Net" tagprefix="ext" %>
<script runat="server">
    protected void Button1_Click(object sender, DirectEventArgs e)
    {
        // Do some Authentication...        
        //人員帳號驗証並抓取語言別後寫入session
        Session["lang"] = "zh-TW";  //這邊先寫死
        Response.Redirect("Default.aspx");
    }
</script>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
    <style type="text/css">
       .Msgcolor
       {
          font-weight:bold ;
          color:Red;
       }
    </style>  
</head>
<body>
    <form id="Form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server" />
                 <ext:Window 
            ID="Window1" 
            runat="server" 
            Closable="false"
            Resizable="false"
            Height="180" 
            Icon="Lock" 
            Title="Login"
            Draggable="false"
            Width="350"
            Modal="true"
            BodyPadding="5"
            Layout="Form">
            <Items>
                <ext:TextField 
                    ID="tf_user_id" 
                    runat="server" 
                    FieldLabel="登入帳號" 
                    AllowBlank="false"
                    BlankText="Your username is required."
                    />
                <ext:TextField 
                    ID="tf_password" 
                    runat="server" 
                    InputType="Password" 
                    FieldLabel="登入密碼" 
                    AllowBlank="false" 
                    BlankText="Your password is required."
                    />
                <ext:Label ID="lb_msg" runat="server" Cls="Msgcolor">
                </ext:Label>
            </Items>
            <Buttons>
                <ext:Button ID="bt_login" runat="server" Text="Login" Icon="Accept" >
                    <DirectEvents>
                        <Click OnEvent="Button1_Click" >
                            <EventMask ShowMask="true" Msg="登入中..." MinDelay="500" />
                        </Click>
                    </DirectEvents>
                </ext:Button>
            </Buttons>
        </ext:Window>
    </form>
</body>
</html>
--Login.aspx------end------------------------------------------------
↓Default.aspx,在第一行的地方,加上Inherits="BasePage",就可以了
--Default.aspx------Start------------------------------------------------
<%@ Page Language="C#" Inherits="BasePage" %>
<%@ Import Namespace="System.Collections.Generic"%>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <!DOCTYPE html>
<html>
<head id="Head1" runat="server">  
</head>
<body>
    <form id="Form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server" />
                 <ext:Store ID="Store1" runat="server">
            <Model>
                <ext:Model ID="Model1" runat="server" IDProperty="Id" Name="Person" ClientIdProperty="PhantomId">
                    <Fields>
                        <ext:ModelField Name="Id" Type="Int" UseNull="true" />
                        <ext:ModelField Name="Email" />
                        <ext:ModelField Name="First" />
                        <ext:ModelField Name="Last" />
                    </Fields>
                    <Validations>
                        <ext:LengthValidation Field="Email" Min="1" />
                        <ext:LengthValidation Field="First" Min="1" />
                        <ext:LengthValidation Field="Last" Min="1" />                                
                    </Validations>
                </ext:Model>
            </Model>            
        </ext:Store>
                          <ext:FormPanel 
            ID="UserForm" 
            runat="server"
            Icon="User"
            Frame="true"
            LabelAlign="Right"
            Title="_User"
            Width="500">
            <Items>
                <ext:TextField ID="TextField1" runat="server"
                    FieldLabel="_Email"
                    Name="Email"
                    AllowBlank="false"
                    Vtype="email"
                    AnchorHorizontal="100%"
                    />
                                 <ext:TextField ID="TextField2" runat="server"
                    FieldLabel="_First"
                    Name="First"
                    AllowBlank="false"
                    AnchorHorizontal="100%"
                    />
                                 <ext:TextField ID="TextField3" runat="server"
                    FieldLabel="_Last"
                    Name="Last"
                    AllowBlank="false"
                    AnchorHorizontal="100%"
                    />
            </Items>            
                         <Buttons>
                <ext:Button ID="Button1" 
                    runat="server"
                    Text="_Save"
                    Icon="Disk">
                </ext:Button>
                                 <ext:Button ID="Button2" 
                    runat="server"
                    Text="_Create"
                    Icon="UserAdd">
                </ext:Button>
                                 <ext:Button ID="Button3" 
                    runat="server"
                    Text="_Reset">
                </ext:Button>
            </Buttons>
        </ext:FormPanel>
                 <ext:GridPanel 
            ID="GridPanel1" 
            runat="server"
            Icon="Table"
            Frame="true"
            Title="_Users"
            Height="400"
            Width="500"
            StoreID="Store1"
            StyleSpec="margin-top: 10px">
            <ColumnModel>
                <Columns>
                    <ext:Column ID="Column1" runat="server" Text="_ID" Width="40" DataIndex="Id" />                    
                    <ext:Column ID="Column2" runat="server" Text="_Email" Flex="1" DataIndex="Email"/>                    
                    <ext:Column ID="Column3" runat="server" Text="_First" Flex="1" DataIndex="First"/>                    
                    <ext:Column ID="Column4" runat="server" Text="_Last" Flex="1" DataIndex="Last" />                    
                    <ext:CommandColumn ID="CommandColumn1" runat="server" Width="70">
                        <Commands>
                            <ext:GridCommand Text="_Reject" ToolTip-Text="Reject row changes" CommandName="reject" Icon="ArrowUndo" />
                        </Commands>
                    </ext:CommandColumn>
                </Columns>
            </ColumnModel>
                        <TopBar>
                <ext:Toolbar ID="Toolbar1" runat="server">
                    <Items>
                        <ext:Button ID="Button4" runat="server" Text="_Add" Icon="Add"/>                        
                        <ext:Button ID="Button5" runat="server" Text="_Delete" Icon="Exclamation"/>
                    </Items>
                </ext:Toolbar>
            </TopBar>
                         <SelectionModel>
                <ext:RowSelectionModel ID="RowSelectionModel1" runat="server" Mode="Single" />
            </SelectionModel>
            <Buttons>
                <ext:Button ID="Button7" runat="server" Text="_Change_Lang" />
            </Buttons>
        </ext:GridPanel>
    </form>
</body>
</html>
--Default.aspx------end------------------------------------------------
0 notes
extnet-blog · 13 years ago
Text
使用GlobalResources切換 多國語言
多國語言切換方式為
這邊的切換來源是使用GlobalResources
原本Default.aspx在撰寫時,我是習慣在相關text前加底線
如下圖
Tumblr media
↓點Change Lang後,就會換置
Tumblr media
↓再按一次換英文
Tumblr media
↓可以看一下方按總管
Tumblr media
bin資料夾是用ext.net的必要檔,web.config可以參考這份文件
建立一個App_Code資料夾,存放語言切換的function,命名為UdfSet.cs
再建立一個App_GlobalResources資料夾,存放語言對照表
App_GlobalResources底下有三個檔案
  Resource.resx(語言別預設的對對照檔,如果沒有此檔將無法抓出值value)
  Resource.en.resx(英文檔)
  Resource.zh-TW.resx(中文檔)
↓Resource.resx跟Resource.en.resx內容是一樣的
Tumblr media
↓Resource.zh-TW.resx
Tumblr media
↓UdfSet.cs
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Globalization; using Ext.Net; /// /// UdfSet 的摘要描述 /// public class UdfSet { public static void Language_recource(Control parent, String sLanguage) { if (sLanguage == "") //預設英語系 { System.Threading.Thread.CurrentThread.CurrentUICulture =new CultureInfo("en"); System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en"); } else { System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo(sLanguage); System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(sLanguage); } foreach (Control c in parent.Controls) //開始搜尋所有控件後,翻譯相對應Resource { var tf = c as TextField; if (tf != null) { if (Convert.ToString(HttpContext.GetGlobalResourceObject("Resource", tf.FieldLabel.ToLower()))!="") { tf.FieldLabel = Convert.ToString(HttpContext.GetGlobalResourceObject("Resource", tf.FieldLabel.ToLower())); } } var bt = c as Button; if (bt != null) { if (Convert.ToString(HttpContext.GetGlobalResourceObject("Resource", bt.Text.ToLower())) != "") { bt.Text = Convert.ToString(HttpContext.GetGlobalResourceObject("Resource", bt.Text.ToLower())); } } var lb = c as Label; if (lb != null) { if (Convert.ToString(HttpContext.GetGlobalResourceObject("Resource", lb.Text.ToLower())) != "") { lb.Text = Convert.ToString(HttpContext.GetGlobalResourceObject("Resource", lb.Text.ToLower())); } } var pnl = c as Panel; if (pnl != null) { if (Convert.ToString(HttpContext.GetGlobalResourceObject("Resource", pnl.Title.ToLower())) != "") { pnl.Title = Convert.ToString(HttpContext.GetGlobalResourceObject("Resource", pnl.Title.ToLower())); } } var fp = c as FormPanel; if (fp != null) { if (Convert.ToString(HttpContext.GetGlobalResourceObject("Resource", fp.Title.ToLower())) != "") { fp.Title = Convert.ToString(HttpContext.GetGlobalResourceObject("Resource", fp.Title.ToLower())); } } var gridPnl = c as GridPanel; if (gridPnl != null) { if (Convert.ToString(HttpContext.GetGlobalResourceObject("Resource", gridPnl.Title.ToLower())) != "") { gridPnl.Title = Convert.ToString(HttpContext.GetGlobalResourceObject("Resource", gridPnl.Title.ToLower())); } foreach (var col in gridPnl.ColumnModel.Columns) { if (Convert.ToString(HttpContext.GetGlobalResourceObject("Resource", col.Text.ToLower())) != "") { col.Text = Convert.ToString(HttpContext.GetGlobalResourceObject("Resource", col.Text.ToLower())); } var cc = col as CommandColumn; if (cc != null) { if (Convert.ToString(HttpContext.GetGlobalResourceObject("Resource", cc.Text.ToLower())) != "") { col.Text = Convert.ToString(HttpContext.GetGlobalResourceObject("Resource", cc.Text.ToLower())); } } } } Language_recource(c, sLanguage); } } }
↓Default.aspx
<%@ Page Language="C#" %> 
<%@ Import Namespace="System.Collections.Generic"%> 
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %> 
<script runat="server">
    protected void ChangeLangClick(object sender, DirectEventArgs e)
    {
        if (Session["lang"].ToString() == "en")
            Session["lang"] = "zh-TW";           
        else
            Session["lang"] = "en";
        UdfSet.Language_recource(Page, Session["lang"].ToString());    
    }
</script>
    <!DOCTYPE html>
  <html>
<head id="Head1" runat="server"> 
</head>
<body>
    <form id="Form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server" />       
        <ext:Store ID="Store1" runat="server">
            <Model>
                <ext:Model ID="Model1" runat="server" IDProperty="Id" Name="Person" ClientIdProperty="PhantomId">
                    <Fields>
                        <ext:ModelField Name="Id" Type="Int" UseNull="true" />
                        <ext:ModelField Name="Email" />
                        <ext:ModelField Name="First" />
                        <ext:ModelField Name="Last" />
                    </Fields>
                    <Validations>
                        <ext:LengthValidation Field="Email" Min="1" />
                        <ext:LengthValidation Field="First" Min="1" />
                        <ext:LengthValidation Field="Last" Min="1" />                               
                    </Validations>
                </ext:Model>
            </Model>           
        </ext:Store>
                        <ext:FormPanel
            ID="UserForm"
            runat="server"
            Icon="User"
            Frame="true"
            LabelAlign="Right"
            Title="_User"
            Width="500">
            <Items>
                <ext:TextField ID="TextField1" runat="server"
                    FieldLabel="_Email"
                    Name="Email"
                    AllowBlank="false"
                    Vtype="email"
                    AnchorHorizontal="100%"
                    />
                                <ext:TextField ID="TextField2" runat="server"
                    FieldLabel="_First"
                    Name="First"
                    AllowBlank="false"
                    AnchorHorizontal="100%"
                    />
                                <ext:TextField ID="TextField3" runat="server"
                    FieldLabel="_Last"
                    Name="Last"
                    AllowBlank="false"
                    AnchorHorizontal="100%"
                    />
            </Items>           
                        <Buttons>
                <ext:Button ID="Button1"
                    runat="server"
                    Text="_Save"
                    Icon="Disk">
                </ext:Button>
                                <ext:Button ID="Button2"
                    runat="server"
                    Text="_Create"
                    Icon="UserAdd">
                </ext:Button>
                                <ext:Button ID="Button3"
                    runat="server"
                    Text="_Reset">
                </ext:Button>
            </Buttons>
        </ext:FormPanel>
                <ext:GridPanel
            ID="GridPanel1"
            runat="server"
            Icon="Table"
            Frame="true"
            Title="_Users"
            Height="400"
            Width="500"
            StoreID="Store1"
            StyleSpec="margin-top: 10px">
            <ColumnModel>
                <Columns>
                    <ext:Column ID="Column1" runat="server" Text="_ID" Width="40" DataIndex="Id" />                   
                    <ext:Column ID="Column2" runat="server" Text="_Email" Flex="1" DataIndex="Email"/>                   
                    <ext:Column ID="Column3" runat="server" Text="_First" Flex="1" DataIndex="First"/>                   
                    <ext:Column ID="Column4" runat="server" Text="_Last" Flex="1" DataIndex="Last" />                   
                    <ext:CommandColumn ID="CommandColumn1" runat="server" Width="70">
                        <Commands>
                            <ext:GridCommand Text="_Reject" ToolTip-Text="Reject row changes" CommandName="reject" Icon="ArrowUndo" />
                        </Commands>
                    </ext:CommandColumn>
                </Columns>
            </ColumnModel>
                       <TopBar>
                <ext:Toolbar ID="Toolbar1" runat="server">
                    <Items>
                        <ext:Button ID="Button4" runat="server" Text="_Add" Icon="Add"/>                       
                        <ext:Button ID="Button5" runat="server" Text="_Delete" Icon="Exclamation"/>
                    </Items>
                </ext:Toolbar>
            </TopBar>
                        <SelectionModel>
                <ext:RowSelectionModel ID="RowSelectionModel1" runat="server" Mode="Single" />
            </SelectionModel>
              <Buttons>
                <ext:Button ID="Button7" runat="server" Text="_Change_Lang" >
                    <DirectEvents>
                        <Click OnEvent="ChangeLangClick">
                           <EventMask ShowMask="true" />
                        </Click>
                    </DirectEvents>
                </ext:Button>
            </Buttons>
        </ext:GridPanel>
    </form>
</body>
</html>
以上參考此篇文章
http://ext-net.blogspot.tw/2010/11/complete-generic-multi-language-with.html
0 notes
extnet-blog · 13 years ago
Text
在Tumblr使用SyntaxHighlighter貼程式碼
SyntaxHighlighter
是一個可以讓程式碼展現的更美觀的一個工具
因為現在有用到Code,發現直接貼很不美觀
且沒有像編輯程式有顏色,所以上網找了一下,發這個工具不錯
分享給大家知道
首先到主頁編輯程式碼
Costomize→Edit Html
<head>  </head>
之間貼上這段程式碼
---------------------------------------------------------
<!--SYNTAX HIGHLIGHTER BEGINS-->
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/> 
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/> 
<script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js"></script> 
<script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCSharp.js"></script> 
<script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js"></script>
<script language='javascript'>  
    SyntaxHighlighter.config.bloggerMode = false;  
    SyntaxHighlighter.config.stripBrs = true;  
    SyntaxHighlighter.defaults['wrap-lines'] = false;  
    SyntaxHighlighter.config.clipboardSwf = 'http://alexgorbatchev.com/pub/sh/current/scripts/clipboard.swf';  
    SyntaxHighlighter.all();  
</script>
<!--SYNTAX HIGHLIGHTER ENDS-->
---------------------------------------------------------
因為我現在是用C#,所以我只有引用到shBrushCSharp.js這個js
如果有用到其他的語法,可以參考以下這個份文件:
http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/
要文章要使用的話,在html編輯模式下輸入:
<pre class="brush: csharp">
   public class TEST
    {
      //TEST
    }
</pre>
2 notes · View notes
extnet-blog · 13 years ago
Text
什麼是Ext.Net?
Ext.Net是一種AJAX的技術,是ASP.NET的網頁控件下,一系列的元件。
比較適合做登入型的系統框架(如ERP系統、辦公系統..等),如果是要用來寫一般比如:公司公開網站、店家網站等..可能就不較不適合,因為Ext.Net 的UI(使用者介面)比較像一般Windows的視窗,如果要寫公司門面網站可能就會被原本Ext.Net的CSS綁手綁腳。。
Ext.NET包含的功能如下:
1.    強大的跨瀏覽器的ExtJS的JavaScript庫。
2.    簡化了開發的功能。
3.    強大和豐富的AJAX的Web應用程序。
0 notes
extnet-blog · 13 years ago
Text
什麼是AJAX?
AJAX 全名就是 Asynchronous JavaScript XMLHttpRequest,簡單說來就是非同步的 XMLHttpRequest。
一般網頁都是同步的HttpRequest,也就是說只要一發出需求,就會將整個頁面傳回Server,這個將造成Server的負擔,速度也較慢。
如果是非同步的話,只要傳回必要的資料給Server就可以了,速度快,Server的負擔也較少。
0 notes
extnet-blog · 13 years ago
Text
Google Analytics 網站流量分析 設定教學
因為自已有開始在使用
自己呆,搞了很久才成功
發現是沒有把CODE貼到網站上,所以流量都是0....
首先,登入以下網址(沒GOOGLE帳號的就申請一個吧~)
1.   https://www.google.com/analytics/
輸入帳戶名稱、網址....等,底下勾選同意後→建立帳戶(↓如下圖)
Tumblr media
2.接下來是重點(將追踨碼貼到你的網頁上)
Tumblr media
貼在</head> 之前就可以了
追踨碼貼好之後,重新查詢一下(↓如下圖),會出現「追踨狀態:已安裝追踨程式碼」
表示安裝成功了,來看看自己的流量吧
先用Google搜尋一下你的網站後,點擊進入(我blog才剛成立,目前沒有流量,所以自己產生流量。。。)
Tumblr media
現在Google Analytics有即時(測試版)的可以查
很感動的,有一個流量進來(自己),表示設定成功了。
Tumblr media
1 note · View note
extnet-blog · 13 years ago
Text
Ext.Net 環境安裝& 開始使用Ext.Net寫程式
安裝步驟 & 開始使用 如下:
1.安裝Visual Studio 2005,2008 or 2012 或
   Visual Web Developer Express 2005,2008 or 2010
如果未安裝的,可以裝Visual Web Developer Express 2010,是免費的,且使用上跟Visual Studio沒什麼差異。。
2.安裝.Net Framework 3.5以上版本
3.下載元件檔,可以至http://www.ext.net/download/下載你所要的版本
Tumblr media
↓將下載回來的檔案解開來,我習慣開個asp.net 的資料夾放這些元件,待回兒會使用到
Tumblr media
4.開啟專案如附圖
檔案→新網站→選擇ASP.NET空網站(空網站比較乾淨,不會有一些雜七雜八的...)
選擇的語言Visual C#(因為Ext.Net都是用C#寫的,所以選C#會比較好,Ext.Net的範例也都是C#,比較沒有轉換的問題)
當然,您要用vb也是可以使用的,但網路上的支援大部份都是C#...
Tumblr media
↓加一個頁面進來
Tumblr media
↓語言一樣建議是C#,選擇Web Form
這裡我不勾選將程式碼置於各別檔案中,為什麼?
主要是日後要在Ext.Net的討論區發問會比較方便,檔案結構也會比較簡潔....(不會拆成兩個檔.aspx及.cs)
Tumblr media
5.將Ext.Net元件安裝到工具箱(只需安裝一次,日後新增的專案就不需要做這個動作了)
Tumblr media
↑標籤命名為Ext.Net
↓接下來在Ext.Net按右鍵→選擇項目→.Net Framework元件→點瀏覽→
 選擇剛才解壓縮後放至本機的Ext.Net.dll檔→開啟舊檔
Tumblr media
↓預設會勾選Ext.Net的全部元件,直接按"確定",就ok了
Tumblr media
↓元件已經加進來了
Tumblr media
6.開始我們第一個Ext.Net的頁面吧
要使用Ext.Net,第一件事,就是加上ResourceManager,不然會有err
↓將元件ResourceManager拉至你的頁面
當你拉好後,你會發現你的方案總管就會自動出現bin目錄,跟一些dll檔
Tumblr media
↓接下來測試拉個Window並Run看看吧~
第一次會出現是不是要出現除錯訊息,因為還沒有要放到server上,就按確定就可以了
Tumblr media
↓Run的時侯會出現Web.config要設定的訊息
Tumblr media
↓我們把這一段設定加上,再重新Run一次看看吧
Tumblr media
↓很感動的,我們完成第一隻Ext.Net的程式了
Tumblr media
是不是很沒Feel?
你們可以到http://examples.ext.net/找Code,貼到剛才的.aspx上玩看看喔
The End...
0 notes
extnet-blog · 13 years ago
Text
[Ext.Net]動態產生Portal、GridPanel(含store,Model,Field,ColumnModel)
以下範例是動態產生Portal及GridPanel
<%@ Page Language="C#" %>
<%@ Import Namespace="Ext.Net.Utilities" %>
<%@ Import Namespace="System.Data" %>
<%@ Register assembly="Ext.Net" namespace="Ext.Net" tagprefix="ext" %>
<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!X.IsAjaxRequest)
        {
            RefreshPortal();
        }
    }
    protected void RefreshPortal()
    {
        Portal1.Items.Clear();
        //塞PortalColumn,最多四欄
        PortalColumn pc1 = this.GetPortalColumn("0.25");
        pc1.Items.Add(GetPortlet("test1", "G", ""));
        this.Portal1.Items.Add(pc1);
        PortalColumn pc2 = this.GetPortalColumn("0.25");
        pc2.Items.Add(GetPortlet("test2", "C", ""));
        this.Portal1.Items.Add(pc2);
        PortalColumn pc3 = this.GetPortalColumn("0.25");
        pc3.Items.Add(GetPortlet("test3", "L", "http://extnet.tumblr.com"));
        this.Portal1.Items.Add(pc3);
        PortalColumn pc4 = this.GetPortalColumn("0.25");
        pc4.Items.Add(GetPortlet("test4", "C", ""));
        this.Portal1.Items.Add(pc4);
        Portal1.Render();
    }
    private PortalColumn GetPortalColumn(string columnWidth)
    {
        PortalColumn pc = new PortalColumn();
        pc.Layout = "anchor";
        if (!(columnWidth == ""))
            pc.ColumnWidth = Convert.ToDouble(columnWidth);
        return pc;
    }
    private Portlet GetPortlet(string title, string type, string content)
    {
        Portlet p = new Portlet()
        {
            ID = title,
            Title = title,
            Height = 200,
        };
                 if (type == "G") //Grid
        {
            GridPanel gp = new GridPanel();
            Store st = new Store();
            Model md = new Model();
            DataTable dt = new DataTable();
            //.......這邊可從db將資料丟到dt......這裡省略,變數content可以傳sql,以帶入資料
            //
            //取出資料後,以下可帶出欄位名及資料
            foreach (DataColumn dc in dt.Columns)
            {
                md.Fields.Add(new ModelField() { Name = dc.ColumnName });
                gp.ColumnModel.Columns.Add(new Column() { DataIndex = dc.ColumnName, Text = dc.ColumnName });
            }
            if (dt != null)
            {
                object[] Data = new object[dt.Rows.Count];
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    object[] aa = new object[dt.Columns.Count];
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        aa.SetValue(dt.Rows[i][j].ToString(), j);
                    }
                    Data.SetValue(aa, i);
                }
                st.DataSource = Data;
                st.DataBind();
            }
            st.Model.Add(md);
            gp.Store.Add(st);
            p.Items.Add(gp);
        }
        else if (type == "C") //Chart
        {
        }
        else if (type == "L")  //Link
        {
            p.Height = 200;
            p.Loader = new ComponentLoader
            {
                Url = content,
                Mode = LoadMode.Frame,
                LoadMask =
                {
                    ShowMask = true,
                }
            };
        }
        return p;
    }
    protected void Add_Block(object sender, DirectEventArgs e)
    {
        //DO something
        w_Widget.Show();
    }
</script>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
    <title>Portal in TabPanel - Ext.NET Examples</title>
    <link href="/resources/css/examples.css" rel="stylesheet" type="text/css" /> 
         <style type="text/css">
        .x-column-padding{
            padding : 10px 0px 10px 10px;
        }
                 .x-column-padding1{
            padding : 10px;
        }
    </style>  
</head>
<body>
    <form id="Form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server" />
                 <ext:Viewport ID="Viewport1" runat="server" Layout="BorderLayout">
            <Items>               
                <ext:TabPanel ID="TabPanel1" 
                    runat="server" 
                    Region="Center"
                    ActiveTabIndex="0" 
                    Title="TabPanel"
                    MarginsSummary="5 5 5 0">
                    <Items>
                        <ext:Panel ID="Panel4" runat="server" Title="Tab 1" Layout="Fit" >
                            <TabMenu>
                                <ext:Menu ID="Menu1" runat="server">
                                    <Items>
                                        <ext:MenuItem ID="MenuItem1" runat="server" Text="_Widget_Setting" Icon="BorderAll" >
                                            <DirectEvents>
                                                <Click OnEvent="Add_Block" >
                                                    <EventMask ShowMask="true" />
                                                </Click>
                                            </DirectEvents>
                                        </ext:MenuItem>
                                    </Items>
                                </ext:Menu>
                            </TabMenu>  
                            <Items>
                                <ext:Portal ID="Portal1" runat="server" Border="false">
                                    <Items>
                                        <ext:PortalColumn ID="PortalColumn1" 
                                            runat="server"
                                            Cls="x-column-padding">
                                            <Items>
                                                <ext:Portlet ID="Portlet1" runat="server" Title="Another Panel 1" Icon="Accept" />
                                            </Items>
                                        </ext:PortalColumn>
                                        <ext:PortalColumn ID="PortalColumn2" 
                                            runat="server" 
                                            Cls="x-column-padding">
                                            <Items>
                                                <ext:Portlet ID="Portlet2" runat="server" Title="Panel 2" />
                                                <ext:Portlet ID="Portlet3" runat="server" Title="Another Panel 2" />
                                            </Items>
                                        </ext:PortalColumn>
                                        <ext:PortalColumn ID="PortalColumn3" 
                                            runat="server" 
                                            Cls="x-column-padding1">
                                            <Items>
                                                <ext:Portlet ID="Portlet4" runat="server" Title="Panel 3" />
                                                <ext:Portlet ID="Portlet5" runat="server" Title="Another Panel 3" />
                                            </Items>
                                        </ext:PortalColumn>
                                    </Items>
                                </ext:Portal>
                            </Items>
                        </ext:Panel>                       
                    </Items>
                </ext:TabPanel> 
            </Items>
        </ext:Viewport>
        <ext:Window 
            ID="w_Widget" 
            runat="server"
            Resizable="false"
            Height="150" 
            Icon="BorderAll" 
            Title="_Widget_Setting"
            Draggable="false"
            Width="350"
            Modal="True"
            Padding="5"           
            AutoDestroy="False" Layout = "FormLayout" Hidden="True" >
            <Items>
                <ext:FormPanel ID="FormPanel2" runat="server" Height="120" Width="340" Padding="5" Layout="AbsoluteLayout">
                    <Items>
                       <ext:ComboBox ID="cbWedgit_Type" runat="server" FieldLabel="_Wedgit_Type" X="10" Y="10">
                            <Items>
                                <ext:ListItem Text="_One_Column" Value="1" />
                                <ext:ListItem Text="_Two_Column" Value="2" />
                                <ext:ListItem Text="_Three_Column" Value="3" />
                                <ext:ListItem Text="_1_Large_2_Small" Value="4" />
                            </Items>
                       </ext:ComboBox>
                        <ext:ComboBox ID="cb_Widget" runat="server" FieldLabel="_Widget_Add" Width="200" X="10" Y="40">
                            <Items>
                                <ext:ListItem Text="test5" Value="test5" />
                                <ext:ListItem Text="test6" Value="test6" />
                                <ext:ListItem Text="test7" Value="test7" />
                                <ext:ListItem Text="test8" Value="test8" />
                            </Items>
                        </ext:ComboBox>                          
                    </Items>
                    <Buttons>
                        <ext:Button ID="Button1" runat="server" Text="_Close" Icon="Door" >
                            <Listeners>
                                <Click Handler="#{w_Widget}.hide();" />
                            </Listeners>
                        </ext:Button>
                    </Buttons>
                </ext:FormPanel>                
            </Items>            
        </ext:Window>
    </form>
</body>
</html>
0 notes
extnet-blog · 13 years ago
Text
[Ext.Net]GridPanel 最前面加上CheckBox
以下引用
Ext.net 2.0的example http://examples.ext.net/#/GridPanel/Selection_Models/Row_Selection/
Tumblr media
如果我想要在前面改用CheckBox,該如何控制
之前因為Ext.net沒有很熟,所以在這邊找了很久
卡住最久的點是,我將資料打出後,要勾出資料庫已選的資料時要怎麼做?
sm.SelectedRows.Add(new SelectedRow(1));  //這個我會
sm.UpdateSelection();  //這行是重點,沒下到就是不會作用。。
只要在 SelectionModel的地方,將原本RowSelectionModel 改成CheckboxSelectionModel,就可以了
Tumblr media
如下原始碼:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<!DOCTYPE html>
<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
     {
         this.Store1.DataSource = new List<Company> 
         { 
             new Company("3m Co", 71.72, 0.02, 0.03),
             new Company("Alcoa Inc", 29.01, 0.42, 1.47),
             new Company("Altria Group Inc", 83.81, 0.28, 0.34),
             new Company("American Express Company", 52.55, 0.01, 0.02),
             new Company("American International Group, Inc.", 64.13, 0.31, 0.49),
             new Company("AT&T Inc.", 31.61, -0.48, -1.54),
             new Company("Boeing Co.", 75.43, 0.53, 0.71),
             new Company("Caterpillar Inc.", 67.27, 0.92, 1.39),
             new Company("Citigroup, Inc.", 49.37, 0.02, 0.04),
             new Company("E.I. du Pont de Nemours and Company", 40.48, 0.51, 1.28),
             new Company("Exxon Mobil Corp", 68.1, -0.43, -0.64),
             new Company("General Electric Company", 34.14, -0.08, -0.23),
             new Company("General Motors Corporation", 30.27, 1.09, 3.74),
             new Company("Hewlett-Packard Co.", 36.53, -0.03, -0.08),
             new Company("Honeywell Intl Inc", 38.77, 0.05, 0.13),
             new Company("Intel Corporation", 19.88, 0.31, 1.58),
             new Company("International Business Machines", 81.41, 0.44, 0.54),
             new Company("Johnson & Johnson", 64.72, 0.06, 0.09),
             new Company("JP Morgan & Chase & Co", 45.73, 0.07, 0.15),
             new Company("McDonald\"s Corporation", 36.76, 0.86, 2.40),
             new Company("Merck & Co., Inc.", 40.96, 0.41, 1.01),
             new Company("Microsoft Corporation", 25.84, 0.14, 0.54),
             new Company("Pfizer Inc", 27.96, 0.4, 1.45),
             new Company("The Coca-Cola Company", 45.07, 0.26, 0.58),
             new Company("The Home Depot, Inc.", 34.64, 0.35, 1.02),
             new Company("The Procter & Gamble Company", 61.91, 0.01, 0.02),
             new Company("United Technologies Corporation", 63.26, 0.55, 0.88),
             new Company("Verizon Communications", 35.57, 0.39, 1.11),
             new Company("Wal-Mart Stores, Inc.", 45.45, 0.73, 1.63)
         };
        if (!X.IsAjaxRequest)
        {
            this.Store1.DataBind();
            RowSelectionModel sm = this.GridPanel1.GetSelectionModel() as RowSelectionModel;
            sm.SelectedRows.Add(new SelectedRow(1));
            sm.SelectedRows.Add(new SelectedRow("Caterpillar Inc."));
        }
    }
    protected void Button1_Click(object sender, DirectEventArgs e)
    {
        RowSelectionModel sm = this.GridPanel1.GetSelectionModel() as RowSelectionModel;
        StringBuilder sb = new StringBuilder();
        foreach (SelectedRow row in sm.SelectedRows)
        {
            sb.AppendFormat("RecordID: {0}    Row index: {1}<br/>", row.RecordID, row.RowIndex);
        }
        this.Label1.Html = sb.ToString();
    }
    protected void Clear_Click(object sender, DirectEventArgs e)
    {
        RowSelectionModel sm = this.GridPanel1.GetSelectionModel() as RowSelectionModel;
        sm.ClearSelection();
    }
    protected void Add_Click(object sender, DirectEventArgs e)
    {
        RowSelectionModel sm = this.GridPanel1.GetSelectionModel() as RowSelectionModel;
        sm.SelectedRows.Add(new SelectedRow("Boeing Co."));
        sm.UpdateSelection();
    }
    protected void SubmitSelection(object sender, DirectEventArgs e)
    {
        string json = e.ExtraParams["Values"];
        Dictionary<string, string>[] companies = JSON.Deserialize<Dictionary<string, string>[]>(json);
        StringBuilder sb = new StringBuilder();
        sb.Append("<table  cellspacing='15'>");
        bool addHeader = true;
                 foreach (Dictionary<string, string> row in companies)
        {
            if (addHeader)
            {
                sb.Append("<tr>");
                foreach (KeyValuePair<string, string> keyValuePair in row)
                {
                    sb.Append("<td style='white-space:nowrap;font-weight:bold;padding:5px;'>");
                    sb.Append(keyValuePair.Key);
                    sb.Append("</td>");
                }
                sb.Append("</tr>");
                addHeader = false;
            }
                         sb.Append("<tr>");
            foreach (KeyValuePair<string, string> keyValuePair in row)
            {
                sb.Append("<td style='white-space:nowrap;padding:5px;'>");
                sb.Append(keyValuePair.Value);
                sb.Append("</td>");
            }
            sb.Append("</tr>");
        }
        sb.Append("</table>");
        this.Label1.Html = sb.ToString();
    }
    public class Company
    {
        public Company(string name, double price, double change, double pctChange)
        {
            this.Name = name;
            this.Price = price;
            this.Change = change;
            this.PctChange = pctChange;
        }
        public Company()
        {
        }
        public string Name { get;set; }
        public double Price { get;set; }
        public double Change { get;set; }
        public double PctChange { get;set; }
    }
</script>
<html>
<head id="Head1" runat="server">
    <title>Row Selection Model</title>
         <link href="/resources/css/examples.css" rel="stylesheet" type="text/css" />
</head>
<body>
     <form id="Form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server" />
             <ext:Store ID="Store1" runat="server">
            <Model>
                <ext:Model ID="Model1" runat="server" IDProperty="Name">
                    <Fields>
                        <ext:ModelField Name="Name" />
                        <ext:ModelField Name="Price" />
                        <ext:ModelField Name="Change" />
                        <ext:ModelField Name="PctChange" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
             <ext:GridPanel 
            ID="GridPanel1" 
            runat="server" 
            StoreID="Store1"
            Title="Company List"
            Collapsible="true"
            Width="600"
            Height="350">
            <ColumnModel ID="ColumnModel1" runat="server">
           <Columns>
                    <ext:Column ID="Column1" runat="server" Text="Company" DataIndex="Name" Flex="1" />
                    <ext:Column ID="Column2" runat="server" Text="Price" Width="75" DataIndex="Price">
                        <Renderer Format="UsMoney" />
                    </ext:Column>
                    <ext:Column ID="Column3" runat="server" Text="Change" Width="75" DataIndex="Change" />
                    <ext:Column ID="Column4" runat="server" Text="Change" Width="75" DataIndex="PctChange" />
           </Columns>
            </ColumnModel>
            <SelectionModel>
                <ext:CheckboxSelectionModel ID="RowSelectionModel1" runat="server" Mode="Multi" />
            </SelectionModel>           
            <Buttons>
                <ext:Button ID="Button1" runat="server" Text="Submit">
                    <DirectEvents>
                        <Click OnEvent="Button1_Click" />
                    </DirectEvents>
                </ext:Button>
                             <ext:Button ID="Button2" runat="server" Text="Submit with values">
                    <DirectEvents>
                        <Click OnEvent="SubmitSelection">
                            <ExtraParams>
                                <ext:Parameter Name="Values" Value="Ext.encode(#{GridPanel1}.getRowsValues({selectedOnly:true}))" Mode="Raw" />
                            </ExtraParams>
                        </Click>
                    </DirectEvents>
                </ext:Button>
                             <ext:Button ID="Button3" runat="server" Text="Clear">
                    <DirectEvents>
                        <Click OnEvent="Clear_Click" />
                    </DirectEvents>
                </ext:Button>
                             <ext:Button ID="Button4" runat="server" Text="Add 'Boeing Co.' to selection ">
                    <DirectEvents>
                        <Click OnEvent="Add_Click" />
                    </DirectEvents>
                </ext:Button>
            </Buttons>
        </ext:GridPanel>
              <div style="width:590px; border:1px solid gray; padding:5px;">
            <ext:Label ID="Label1" runat="server" />
        </div>    
         </form>
</body>
</html>
0 notes
extnet-blog · 13 years ago
Text
[Ext.Net]範例功能
後台角色&權限管理(使用Desktop)
多國語言(Resource)
首頁Portal使用,可讓user自訂面版
我的最愛
0 notes