<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PeterKellner.net &#187; ExtJS</title>
	<atom:link href="http://peterkellner.net/category/extjs/feed/" rel="self" type="application/rss+xml" />
	<link>http://peterkellner.net</link>
	<description>Microsoft Focused, JavaScript,HTML5 (ExtJS, SenchaTouch &#38; Windows 8 Metro)</description>
	<lastBuildDate>Fri, 11 May 2012 16:43:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>How To Add Paging With a Filter Using Sencha Architect with ExtJS4</title>
		<link>http://peterkellner.net/2012/05/08/how-to-add-paging-with-a-filter-using-sencha-architect-with-extjs4/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-add-paging-with-a-filter-using-sencha-architect-with-extjs4</link>
		<comments>http://peterkellner.net/2012/05/08/how-to-add-paging-with-a-filter-using-sencha-architect-with-extjs4/#comments</comments>
		<pubDate>Tue, 08 May 2012 23:38:24 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[ASP.NET 4.0]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[Sencha]]></category>
		<category><![CDATA[Sencha Architect 2]]></category>

		<guid isPermaLink="false">http://peterkellner.net/?p=2005</guid>
		<description><![CDATA[&#160;
Sometimes,the simplest things can seem complicated.&#160; Well, in this case, after struggling for a while, it turns out the simplest things can actually be pretty simple.&#160; The application I’m building right now (with Sencha’s ExtJS and ASP.NET) is a simple log viewer.&#160; My server base app uses NLog which does a great job of logging [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>Sometimes,the simplest things can seem complicated.&#160; Well, in this case, after struggling for a while, it turns out the simplest things can actually be pretty simple.&#160; The application I’m building right now (with <a href="http://www.sencha.com/">Sencha’s</a> <a href="http://www.sencha.com/products/extjs/">ExtJS</a> and <a href="http://www.asp.net/">ASP.NET</a>) is a simple log viewer.&#160; My server base app uses <a href="http://nlog-project.org/">NLog</a> which does a great job of logging the errors, but the errors are all on my server and I need to see them.&#160; So, hence I need a simple log viewer.&#160; Here is what it looks like once it’s all done.</p>
<p>&#160;</p>
<p><a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/05/image.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/05/image_thumb.png" width="528" height="460" /></a></p>
<p>&#160;</p>
<p>Notice that we have a toolbar that we can check a box in as well as a field to type some text into.&#160; I’m going to assume that creating the windows, the grid, dropping the toolbars on the page (both paging and top toolbar) are something that you know how to do.&#160; The only thing I’m really going to mention is how you go from a grid panel that pages correctly to one that pages correctly with some parameters being sent to the server.</p>
<p>So, it turns out all you have to do is assign an id to each of the controls on your top toolbar, create a <a href="http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.AbstractStore-event-beforeload">beforeload</a> store event where you retrieve the values from your toolbar, then set the store’s proxy <a href="http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Connection-cfg-extraParams">extraParams</a> values to be the filter parameters you want passed.&#160; OK, that’s a mouthful so let me show it in steps.</p>
<p>1.&#160; Assign id’s to the toolbar parameters. (screen shot of the checkbox below)</p>
<p>&#160;</p>
<p><a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/05/image1.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/05/image_thumb1.png" width="428" height="302" /></a></p>
<p>&#160;</p>
<p>2.&#160; Create a beforeload event in your store for the gridview and get the components you want</p>
<p>&#160;</p>
<p><a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/05/image2.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/05/image_thumb2.png" width="261" height="341" /></a></p>
<p>&#160;</p>
<p>3.&#160; Put some code in the beforeload even that gets these components, then sets the ExtraParams value associated with the stores proxy.</p>
<pre class="csharpcode"><span class="kwrd">var</span> checkboxerroronly = Ext.getCmp(<span class="str">'checkboxerroronlyid'</span>);
<span class="kwrd">var</span> usernamefilter = Ext.getCmp(<span class="str">'usernamefilterid'</span>).getValue();

<span class="kwrd">var</span> displayErrorOnly = checkboxerroronly.<span class="kwrd">checked</span>;
store.proxy.extraParams.errorsOnly = displayErrorOnly;
store.proxy.extraParams.username = usernamefilter;</pre>
<p>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>4. And just run it!&#160; If you look at your network traffic, you will see both the errorsOnly and username parameters passed on every page refresh and page forward and back.</p>
<p>&#160;</p>
<p><a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/05/image3.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/05/image_thumb3.png" width="536" height="204" /></a></p>
<p>&#160;</p>
<p>Hope this helps!</p>
<p>(sorry, no source code for this one, just some tips in the middle of a project I’m doing)</p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2012/05/08/how-to-add-paging-with-a-filter-using-sencha-architect-with-extjs4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Details On The ExtJS Application to Build Simple CRUD operation Using Models and Stores</title>
		<link>http://peterkellner.net/2012/04/20/details-on-the-extjs-application-to-build-simple-crud-operation-using-models-and-stores/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=details-on-the-extjs-application-to-build-simple-crud-operation-using-models-and-stores</link>
		<comments>http://peterkellner.net/2012/04/20/details-on-the-extjs-application-to-build-simple-crud-operation-using-models-and-stores/#comments</comments>
		<pubDate>Sat, 21 Apr 2012 00:00:24 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[ASP.NET 2.0]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[Sencha]]></category>
		<category><![CDATA[SenchaMVC]]></category>

		<guid isPermaLink="false">http://peterkellner.net/?p=1973</guid>
		<description><![CDATA[&#160;



Part 1
Basics (mostly server side)


Part 2 (this)
ExtJS Client Side Details



&#160;&#160;
In the first article, a very simple updater was build using Sencha’s ExtJS and Microsoft’s Entity Framework Code First.&#160; The focus was really on the server side while the client side project was included for reference.&#160; The client side app was barely discussed.&#160; In this article, [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<table cellspacing="0" cellpadding="2" width="362" border="1">
<tbody>
<tr>
<td valign="top" width="199">Part 1</td>
<td valign="top" width="161"><a href="http://peterkellner.net/2011/11/04/building-an-senchas-extjs-4-0-mvc-application-with-microsofts-asp-net-mvc3-series-basics/">Basics (mostly server side)</a></td>
</tr>
<tr>
<td valign="top" width="219">Part 2 (this)</td>
<td valign="top" width="170"><a href="http://peterkellner.net/2012/04/20/details-on-the-extjs-application-to-build-simple-crud-operation-using-models-and-stores/">ExtJS Client Side Details</a></td>
</tr>
</tbody>
</table>
<p>&#160;&#160;
<p>In the first article, a very simple updater was build using <a href="http://www.sencha.com/">Sencha’s</a> <a href="http://www.sencha.com/products/extjs/">ExtJS</a> and Microsoft’s <a href="http://msdn.microsoft.com/en-us/data/aa937723">Entity Framework</a> <a href="http://blogs.msdn.com/b/adonet/archive/2011/04/11/ef-4-1-released.aspx">Code First</a>.&#160; The focus was really on the server side while the client side project was included for reference.&#160; The client side app was barely discussed.&#160; In this article, we are going to discuss in more detail what is happening on the client side and how the <a href="http://www.sencha.com/products/extjs/">Sencha ExtJS</a> <a href="http://en.wikipedia.org/wiki/JavaScript">JavaScript</a> library helps us to implement these updates.</p>
<p>&#160;</p>
<h2>The Basics</h2>
<p>Let’s start out with some basics rather than jump right in to the real project.&#160;&#160; I think we can all assume the displaying of the data is pretty simple. We just create a store, add some fields, hook it up to a <a href="http://docs.sencha.com/ext-js/4-0/#!/api/Ext.grid.Panel">Ext.grid.Panel</a> and set the store to <a href="http://docs.sencha.com/ext-js/4-0/#!/api/Ext.ElementLoader-cfg-autoLoad">autoload</a> and it all just works.&#160; Updating though does add a little more complexity and for that, we are going to add some structure.&#160; So, let’s take a look at the very basics without any UI at all.</p>
<p>Just by way of reminders, we create two simple services in our project.&#160; One that reads and the other that updates.&#160; For the purpose of this article, those are the three (of four) <a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete">CRUD</a> operations we are going to implement (read,insert and update).&#160; Let’s first implement those operations directly.&#160; Below is a very straight forward JavaScript which basically represents a completely working ExtJS app with a single button in the viewport.&#160; Here is the code below.</p>
<pre class="csharpcode">Ext.Loader.setConfig({ enabled: <span class="kwrd">true</span> });
Ext.require(<span class="str">'Ext.container.Viewport'</span>);

Ext.application({
    name: <span class="str">'AM'</span>,

    controllers: [
        <span class="str">'Users'</span>
    ],

    launch: <span class="kwrd">function</span>() {
        Ext.create(<span class="str">'Ext.container.Viewport'</span>, {
            layout: <span class="str">'border'</span>,
            items: [
                {
                    xtype: <span class="str">'button'</span>,
                    region: <span class="str">'center'</span>,
                    text: <span class="str">'Insert a Record'</span>,
                    handler: <span class="kwrd">function</span> () {
                        <span class="kwrd">var</span> writer = <span class="kwrd">new</span> Ext.data.JsonWriter({
                            type: <span class="str">'json'</span>,
                            encode: <span class="kwrd">false</span>,
                            listful: <span class="kwrd">true</span>,
                            writeAllFields: <span class="kwrd">true</span>,
                            returnJson: <span class="kwrd">true</span>
                        });

                        <span class="kwrd">var</span> reader = <span class="kwrd">new</span> Ext.data.JsonReader({
                            totalProperty: <span class="str">'total'</span>,
                            successProperty: <span class="str">'success'</span>,
                            idProperty: <span class="str">'Id'</span>,
                            root: <span class="str">'Data'</span>,
                            messageProperty: <span class="str">'message'</span>
                        });

                        <span class="kwrd">var</span> proxy = <span class="kwrd">new</span> Ext.data.HttpProxy({
                            reader: reader,
                            writer: writer,
                            type: <span class="str">'ajax'</span>,
                            api: {
                                read: <span class="str">'/UserInfo/Get'</span>,
                                create: <span class="str">'/UserInfo/Create'</span>,
                                update: <span class="str">'/UserInfo/Update'</span>,
                                destroy: <span class="str">'/UserInfo/Delete'</span>
                            },
                            headers: {
                                <span class="str">'Content-Type'</span>: <span class="str">'application/json; charset=UTF-8'</span>
                            }
                        });

                        Ext.define(<span class="str">'MyModel'</span>, {
                            extend: <span class="str">'Ext.data.Model'</span>,
                            fields: [<span class="str">'Id'</span>, <span class="str">'Name'</span>, <span class="str">'Email'</span>],
                            proxy: proxy
                        });

                        Ext.define(<span class="str">'MyStore'</span>, {
                            extend: <span class="str">'Ext.data.Store'</span>,
                            model: <span class="str">'MyModel'</span>,
                            autoLoad: <span class="kwrd">true</span>,
                            paramsAsHash: <span class="kwrd">true</span>,
                            proxy: proxy
                        });

                        <span class="kwrd">var</span> myStore = Ext.create(<span class="str">'MyStore'</span>, {
                        });

                        myStore.add({
                            Name: <span class="str">'TestName'</span>,
                            Email: <span class="str">'TestEmail@Test.com'</span>
                        });

                        myStore.sync();
                    }
                }
            ]
        });
    }
});</pre>
<p>Without going into to much detail, basically, what has been done above is a to create a simple <a href="http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.Model">model</a> (myModel) which contains a JsonReader and JsonWriter and proxy of course. This model has a couple fields in it (Id,Name and Email), then a simple <a href="http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.Store">store</a> is created that uses this model called myStore.&#160; Once this store has been created, we simply call the store’s “add” method with a config object that represents the data, then calling sync() on that store forces an insert (or create) to be executed through the proxy.&#160; If I look at Chrome’s JavaScript debugger (network tab), you can see from the picture below that indeed, the servers UserInfo/Create method has been called passing in the parameters Name and Email.</p>
<p>&#160;</p>
<p><a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/04/image14.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/04/image_thumb12.png" width="516" height="192" /></a></p>
<p>&#160;</p>
<p>It’s important to understand these steps because we will be using the store and model in a similar way when we update the data in our next section.</p>
<p>&#160;</p>
<h2>Implementation in Grid and Editor Panel</h2>
<p>&#160;</p>
<p>We are using the ExtJS MVC architecture for this app so all our procedural code is in the controller.&#160; For the Ext.grid.Panel, all we have for the view is the following (app/view/List.js).</p>
<p>&#160;</p>
<p><a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/04/image15.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/04/image_thumb13.png" width="322" height="179" /></a></p>
<p>&#160;</p>
<pre class="csharpcode">Ext.define(<span class="str">'AM.view.user.List'</span>, {
    extend: <span class="str">'Ext.grid.Panel'</span>,
    alias: <span class="str">'widget.userlist'</span>,

    title: <span class="str">'All Users'</span>,
    store: <span class="str">'Users'</span>,

    columns: [
    { header: <span class="str">'Name'</span>, dataIndex: <span class="str">'Name'</span>, flex: 1 },
    { header: <span class="str">'Email'</span>, dataIndex: <span class="str">'Email'</span>, flex: 1 }
    ]
});</pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Then, in our controller (app/controller/Users.js) we have the working code that actually does the editing and updating of the record.&#160; the code is below:</p>
<pre class="csharpcode">Ext.define(<span class="str">'AM.controller.Users'</span>, {
    extend: <span class="str">'Ext.app.Controller'</span>,
    stores: [<span class="str">'Users'</span>],
    models: [<span class="str">'User'</span>],
    views: [<span class="str">'user.Edit'</span>, <span class="str">'user.List'</span>],
    refs: [
        {
            <span class="kwrd">ref</span>: <span class="str">'usersPanel'</span>,
            selector: <span class="str">'panel'</span>
        }
    ],
    init: <span class="kwrd">function</span>() {
        <span class="kwrd">this</span>.control({
            <span class="str">'viewport &gt; userlist dataview'</span>: {
                itemdblclick: <span class="kwrd">this</span>.editUser
            },
            <span class="str">'useredit button[action=save]'</span>: {
                click: <span class="kwrd">this</span>.updateUser
            }
        });
    },
    editUser: <span class="kwrd">function</span>(grid, record) {
        <span class="kwrd">var</span> edit = Ext.create(<span class="str">'AM.view.user.Edit'</span>).show();

        edit.down(<span class="str">'form'</span>).loadRecord(record);
    },
    updateUser: <span class="kwrd">function</span>(button) {
        <span class="kwrd">var</span> win    = button.up(<span class="str">'window'</span>),
            form   = win.down(<span class="str">'form'</span>),
            record = form.getRecord(),
            values = form.getValues();
        record.set(values);
        win.close();
        <span class="kwrd">this</span>.getUsersStore().sync();
    }
});</pre>
<p>Basically, this follows the exact same method we described above for implementing the CRUD.&#160; Note getUsersStore().sync.&#160; This does the same thing as shown above to force the appropriate call the back end.</p>
<p>&#160;</p>
<h2>Remarks</h2>
<p>Hope this helps give you a little more understanding into updating with the ExtJS library. If you are looking for the source, it’s in part 1 of this series.</p>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style></p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2012/04/20/details-on-the-extjs-application-to-build-simple-crud-operation-using-models-and-stores/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Setting Values In a Form Using the Sencha Architect 2.0 (ExtJS 4.0)</title>
		<link>http://peterkellner.net/2012/04/17/setting-values-in-a-form-using-the-sencha-architect-2-0-extjs-4-0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=setting-values-in-a-form-using-the-sencha-architect-2-0-extjs-4-0</link>
		<comments>http://peterkellner.net/2012/04/17/setting-values-in-a-form-using-the-sencha-architect-2-0-extjs-4-0/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 00:01:50 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[Sencha]]></category>
		<category><![CDATA[Sencha Architect 2]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2012/04/17/setting-values-in-a-form-using-the-sencha-architect-2-0-extjs-4-0/</guid>
		<description><![CDATA[Let’s say you want to make a simple modal window that appears when you double click on a row in a Sencha Grid Panel.&#160; Let’s assume you have the panel created and in the double click event you need to put some code.&#160; You want that code to pass in some values to the window, [...]]]></description>
			<content:encoded><![CDATA[<p>Let’s say you want to make a simple modal window that appears when you <a href="http://docs.sencha.com/ext-js/4-0/#!/api/Ext.grid.Panel-event-itemdblclick">double click</a> on a row in a <a href="http://www.sencha.com/">Sencha</a> <a href="http://docs.sencha.com/ext-js/4-0/#!/api/Ext.grid.Panel">Grid Panel</a>.&#160; Let’s assume you have the panel created and in the double click event you need to put some code.&#160; You want that code to pass in some values to the <a href="http://docs.sencha.com/ext-js/4-0/#!/api/Ext.window.Window">window</a>, then have the window pop up and look something like this:</p>
<p>&#160;</p>
<p><a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/04/image7.png"><img title="image" style="display: inline" alt="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/04/image_thumb5.png" width="354" height="225" /></a></p>
<p>&#160;</p>
<p>We know we need to create a <a href="http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.Panel">form panel</a>, but first, let’s code the double click event in the grid that brings it up.&#160; To do this, we add the DoubleClick event to the Grid Panel and then, using the “record” passed in, we pass that to our new Windows we are about to create.&#160; below is some code I wrote to do this (3 lines).</p>
<p>&#160;</p>
<p><a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/04/image8.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/04/image_thumb6.png" width="567" height="201" /></a></p>
<p>&#160;</p>
<p>Next, let’s go into designer and make a simple form that is basically a top level window that has a form panel as a client, then the form panel has a <a href="http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.FieldSet">fieldset</a>, and that fieldset has 3 <a href="http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.field.Text">textfields</a>.&#160; Very straight forward and what you end up getting from SA (<a href="http://www.sencha.com/products/architect">Sencha Architect</a>) looks like the following.&#160; I won’t go through the drag and drops to make it, but it is pretty straight forward.&#160; It took me about 30 seconds.</p>
<p>&#160;</p>
<p><a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/04/image9.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/04/image_thumb7.png" width="462" height="243" /></a></p>
<p>&#160;</p>
<p>The code it created looks like the following (which also contains the load event I entered myself and is pictured separately below it.</p>
<pre class="csharpcode">Ext.define(<span class="str">'MyApp.view.AddressUpdateWindow'</span>, {
    extend: <span class="str">'Ext.window.Window'</span>,

    height: 250,
    width: 400,
    title: <span class="str">'Address Book Update'</span>,

    initComponent: <span class="kwrd">function</span>() {
        <span class="kwrd">var</span> me = <span class="kwrd">this</span>;

        Ext.applyIf(me, {
            items: [
                {
                    xtype: <span class="str">'form'</span>,
                    bodyPadding: 10,
                    items: [
                        {
                            xtype: <span class="str">'fieldset'</span>,
                            title: <span class="str">'My Fields'</span>,
                            items: [
                                {
                                    xtype: <span class="str">'textfield'</span>,
                                    name: <span class="str">'City'</span>,
                                    fieldLabel: <span class="str">'City'</span>,
                                    anchor: <span class="str">'100%'</span>
                                },
                                {
                                    xtype: <span class="str">'textfield'</span>,
                                    name: <span class="str">'State'</span>,
                                    fieldLabel: <span class="str">'State'</span>,
                                    anchor: <span class="str">'100%'</span>
                                },
                                {
                                    xtype: <span class="str">'textfield'</span>,
                                    name: <span class="str">'Zip'</span>,
                                    fieldLabel: <span class="str">'Zip'</span>,
                                    anchor: <span class="str">'100%'</span>
                                }
                            ]
                        }
                    ],
                    listeners: {
                        afterrender: {
                            fn: me.onFormAfterRender,
                            scope: me
                        }
                    }
                }
            ],
            dockedItems: [
                {
                    xtype: <span class="str">'toolbar'</span>,
                    dock: <span class="str">'bottom'</span>,
                    items: [
                        {
                            xtype: <span class="str">'button'</span>,
                            handler: <span class="kwrd">function</span>(button, <span class="kwrd">event</span>) {
                                debugger;
                            },
                            text: <span class="str">'Save'</span>
                        }
                    ]
                }
            ]
        });

        me.callParent(arguments);
    },

    onFormAfterRender: <span class="kwrd">function</span>(abstractcomponent, options) {

        <span class="kwrd">var</span> recordData =
        abstractcomponent.up().recordData;

        abstractcomponent.getForm().setValues(
        recordData
        );

        <span class="rem">//abstractcomponent.getForm().setValues({</span>
        <span class="rem">//    City: recordData.City,</span>
        <span class="rem">//    State: recordData.State,</span>
        <span class="rem">//    Zip: recordData.Zip</span>
        <span class="rem">//});</span>

    }

});</pre>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Below is the code I wrote which you can see incorporated in the code above.&#160; Notice the lines I commented out.&#160; I just did this to show what is really happening, but I condensed it a little in my real JavaScript.</p>
<p>&#160;</p>
<p><a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/04/image10.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2012/04/image_thumb8.png" width="569" height="312" /></a></p>
<p>&#160;</p>
<p>So basically, that’s it.&#160; We created a double click event in a grid panel and from that we opened a pop up form and populated it with data.&#160; Very straight forward.</p>
<p>HTH’s.</p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2012/04/17/setting-values-in-a-form-using-the-sencha-architect-2-0-extjs-4-0/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Building an Sencha&#8217;s ExtJS 4.0 MVC Application With Microsoft&#8217;s ASP.NET MVC3 Series / Basics</title>
		<link>http://peterkellner.net/2011/11/04/building-an-senchas-extjs-4-0-mvc-application-with-microsofts-asp-net-mvc3-series-basics/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=building-an-senchas-extjs-4-0-mvc-application-with-microsofts-asp-net-mvc3-series-basics</link>
		<comments>http://peterkellner.net/2011/11/04/building-an-senchas-extjs-4-0-mvc-application-with-microsofts-asp-net-mvc3-series-basics/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 18:47:01 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[.NET 4.0]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[MVC3]]></category>
		<category><![CDATA[Sencha]]></category>
		<category><![CDATA[SenchaMVC]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2011/11/04/building-an-senchas-extjs-4-0-mvc-application-with-microsofts-asp-net-mvc3-series-basics/</guid>
		<description><![CDATA[


Part 1 (this)
Basics (mostly server side)


Part 2
ExtJS Client Side Details



&#160;
Introduction

If you have a problem like this involving ASP.NET or Sencha Tools, more information about our consulting services are here


In this series of articles, we will take the reference application build by the Sencha product team for using Sencha’s MVC pattern running with an ASP.NET 4.0 [...]]]></description>
			<content:encoded><![CDATA[<table width="362" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="199">Part 1 (this)</td>
<td valign="top" width="161"><a href="http://peterkellner.net/2011/11/04/building-an-senchas-extjs-4-0-mvc-application-with-microsofts-asp-net-mvc3-series-basics/">Basics (mostly server side)</a></td>
</tr>
<tr>
<td valign="top" width="219">Part 2</td>
<td valign="top" width="170"><a href="http://peterkellner.net/2012/04/20/details-on-the-extjs-application-to-build-simple-crud-operation-using-models-and-stores/">ExtJS Client Side Details</a></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Introduction</p>
<div>
<div class="peterkellnerpromo"><a href="http://peterkellner.net/open-source-javascript-extjs-and-jquery/" target="_blank">If you have a problem like this involving ASP.NET or Sencha Tools, more information about our consulting services are here</a></div>
</div>
<div>
<p>In this series of articles, we will take the reference application build by the <a href="http://sencha.com">Sencha</a> product team for using <a href="http://www.sencha.com/learn/the-mvc-application-architecture/">Sencha’s MVC pattern</a> running with an ASP.NET 4.0 project (IIS in production).  The first article takes the reference Sencha MVC app and with almost no changes, makes it work with the ASP.NET <a href="http://www.microsoft.com/visualstudio/en-us">Visual Studio 2010</a> project.  By default, the application works with <a href="http://json.org">JSON</a> static files.  We change that to work with an <a href="http://www.asp.net/mvc/mvc3">ASP.NET MVC3 project</a>.  The second article in the series embellishes the application to include a more real user experience by adding additional functionality and data.  The improved functionality includes both date and number columns as well as paging.  It also adds functionality for inserts and deletes which are left out of the base app from Sencha.</p>
</div>
<div></div>
<div></div>
<div id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:18f8ad45-378a-4ee5-ba60-cc46b12c93f8" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;">
<p>Visual Studio Project <a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2011/11/SenchaDesignerExtension3.zip" target="_blank">SenchaMVCASPNetSolution</a></p>
</div>
<p>&nbsp;</p>
<h2>The Final Project when running:</h2>
<p>&nbsp;</p>
<p><a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2011/11/image1.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2011/11/image_thumb1.png" alt="image" width="461" height="323" border="0" /></a></p>
<p>&nbsp;</p>
<p><span id="more-1634"></span></p>
<p>&nbsp;</p>
<h2>What Is Sencha’s MVC Application</h2>
<p>I don’t want to spend a lot of time here explaining what Sencha does really well in there article but I feel a short explanation is helpful  (<a href="http://www.sencha.com/learn/the-mvc-application-architecture/">http://www.sencha.com/learn/the-mvc-application-architecture/</a>).</p>
<p>So, here we go.  Basically ExtJS is a client side JavaScript framework which allows you to build the full user experience in JavaScript.  That is, all the grids, forms, tabs, etc. are all generated by a client side JavaScript library.  All that goes up and down from the server is JSON (after the JavaScript framework and code and assets are downloaded).  This means that on the client side, all the code for displaying a grid for example, reaching out for data, pushing data changes, etc. all need to be done on the client (browser).  Sencha’s ExtJS MVC pattern helps organize all these functions into a set of directories and functions that make building apps scalable.</p>
<p>Below is what Sencha’s app in Visual Studio looks like:</p>
<p>&nbsp;</p>
<p><a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2011/11/image2.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2011/11/image_thumb2.png" alt="image" width="212" height="310" border="0" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>ASP.NET Implementation</h2>
<p>The major change to the stock MVC app from Sencha is to change there Store class.  Here is the new Store Class.</p>
<p>&nbsp;</p>
<p><a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2011/11/image3.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2011/11/image_thumb3.png" alt="image" width="223" height="161" border="0" /></a></p>
<p>And the JavaScript itself:</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum1" style="color: #606060;"> 1:</span> <span style="color: #0000ff;">var</span> writer = <span style="color: #0000ff;">new</span> Ext.data.JsonWriter({</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum2" style="color: #606060;"> 2:</span>     type: <span style="color: #006080;">'json'</span>,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum3" style="color: #606060;"> 3:</span>     encode: <span style="color: #0000ff;">false</span>,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum4" style="color: #606060;"> 4:</span>     listful: <span style="color: #0000ff;">true</span>,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum5" style="color: #606060;"> 5:</span>     writeAllFields: <span style="color: #0000ff;">true</span>,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum6" style="color: #606060;"> 6:</span>     returnJson: <span style="color: #0000ff;">true</span></pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum7" style="color: #606060;"> 7:</span> });</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum8" style="color: #606060;"> 8:</span></pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum9" style="color: #606060;"> 9:</span> <span style="color: #0000ff;">var</span> reader = <span style="color: #0000ff;">new</span> Ext.data.JsonReader({</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum10" style="color: #606060;"> 10:</span>     totalProperty: <span style="color: #006080;">'total'</span>,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum11" style="color: #606060;"> 11:</span>     successProperty: <span style="color: #006080;">'success'</span>,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum12" style="color: #606060;"> 12:</span>     idProperty: <span style="color: #006080;">'Id'</span>,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum13" style="color: #606060;"> 13:</span>     root: <span style="color: #006080;">'Data'</span>,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum14" style="color: #606060;"> 14:</span>     messageProperty: <span style="color: #006080;">'message'</span></pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum15" style="color: #606060;"> 15:</span> });</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum16" style="color: #606060;"> 16:</span></pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum17" style="color: #606060;"> 17:</span> <span style="color: #0000ff;">var</span> proxy = <span style="color: #0000ff;">new</span> Ext.data.HttpProxy({</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum18" style="color: #606060;"> 18:</span>     reader: reader,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum19" style="color: #606060;"> 19:</span>     writer: writer,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum20" style="color: #606060;"> 20:</span>     type: <span style="color: #006080;">'ajax'</span>,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum21" style="color: #606060;"> 21:</span>     api: {</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum22" style="color: #606060;"> 22:</span>         read: <span style="color: #006080;">'/UserInfo/Get'</span>,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum23" style="color: #606060;"> 23:</span>         create: <span style="color: #006080;">'/UserInfo/Create'</span>,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum24" style="color: #606060;"> 24:</span>         update: <span style="color: #006080;">'/UserInfo/Update'</span>,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum25" style="color: #606060;"> 25:</span>         destroy: <span style="color: #006080;">'/UserInfo/Delete'</span></pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum26" style="color: #606060;"> 26:</span>     },</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum27" style="color: #606060;"> 27:</span>     headers: {</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum28" style="color: #606060;"> 28:</span>         <span style="color: #006080;">'Content-Type'</span>: <span style="color: #006080;">'application/json; charset=UTF-8'</span></pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum29" style="color: #606060;"> 29:</span>     }</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum30" style="color: #606060;"> 30:</span> });</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum31" style="color: #606060;"> 31:</span></pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum32" style="color: #606060;"> 32:</span> Ext.define(<span style="color: #006080;">'AM.store.Users'</span>, {</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum33" style="color: #606060;"> 33:</span>     extend: <span style="color: #006080;">'Ext.data.Store'</span>,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum34" style="color: #606060;"> 34:</span>     model: <span style="color: #006080;">'AM.model.User'</span>,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum35" style="color: #606060;"> 35:</span>     autoLoad: <span style="color: #0000ff;">true</span>,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum36" style="color: #606060;"> 36:</span>     paramsAsHash: <span style="color: #0000ff;">true</span>,</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum37" style="color: #606060;"> 37:</span>     proxy: proxy</pre>
<p>&nbsp;</p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span id="lnum38" style="color: #606060;"> 38:</span> });</pre>
<p>&nbsp;</p>
</div>
</div>
<p>&nbsp;</p>
<p>The primary change is to the reader.  Notice that the API’s are defined now to point the ASP.NET controller UserInfo.  Also, the column names have been changed to start with uppercase to be consistent with public properties in ASP.NET.  That is, id,name and email are now Id,Name and Email.</p>
<p>&nbsp;</p>
<p>Now, we need to implement the controller on the ASP.NET.  Basically, we implement GET on the read and POST on the write.  The controller class in c# is as follows: (Visual Studio Solution Explorer first, then the controller code itself)</p>
<p>&nbsp;</p>
<p><a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2011/11/image4.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2011/11/image_thumb4.png" alt="image" width="244" height="156" border="0" /></a></p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<pre id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> UserInfoController : Controller{    <span style="color: #0000ff;">public</span> JsonResult Get(<span style="color: #0000ff;">int</span>? start, <span style="color: #0000ff;">int</span>? limit)    {        <span style="color: #0000ff;">using</span> (var db = <span style="color: #0000ff;">new</span> Db())        {            start = start.HasValue ? start.Value : 0;            limit = limit.HasValue ? limit.Value : Int32.MaxValue;            <span style="color: #0000ff;">int</span> cnt = db.Users.Count();            var recs = db.Users.OrderBy(a =&gt; a.Id).                Skip(start.Value).Take(limit.Value).ToList();            <span style="color: #0000ff;">return</span> Json(<span style="color: #0000ff;">new</span>                            {                                Data = recs,                                total = cnt                            }, JsonRequestBehavior.AllowGet);        }    }

    [HttpPost]    <span style="color: #0000ff;">public</span> JsonResult Update(UserInfo data)    {        <span style="color: #0000ff;">bool</span> success = <span style="color: #0000ff;">false</span>;        <span style="color: #0000ff;">string</span> message = <span style="color: #006080;">"no record found"</span>;        <span style="color: #0000ff;">if</span> (data != <span style="color: #0000ff;">null</span> &amp;&amp; data.Id &gt; 0)        {            <span style="color: #0000ff;">using</span> (var db = <span style="color: #0000ff;">new</span> Db())            {                var rec = db.Users.Where(a =&gt; a.Id == data.Id).                    FirstOrDefault();                rec.Name = data.Name;                rec.Email = data.Email;                db.SaveChanges();                success = <span style="color: #0000ff;">true</span>;                message = <span style="color: #006080;">"Update method called successfully"</span>;            }        }

        <span style="color: #0000ff;">return</span> Json(<span style="color: #0000ff;">new</span>                        {                            data,                            success,                            message                        });    }}</pre>
</div>
<p>&nbsp;</p>
<p>Notice that the Get method returns a JsonResult.  This conveniently returns the data in JSON format.  Part of the secret sauce here is in the Db().  This app used Microsoft’s new EntityFamework CodeFirst. Following the standard CodeFirst model, we implement the simple c# code and it automagically creates the data tables (and data) in the database (my example uses SqlServer CE because it can be run without installing any database on your windows computer, the code is all in-memory).</p>
<p>If we look at the Model on the ASP.NET MVC3 side, you’ll notice the c# attributes and the DbContext that do the magic for you.  There are some excellent getting started guides on the web including one from <a href="http://thedatafarm.com/blog/">Julie Lerman</a> (walk through video: <a title="http://msdn.microsoft.com/en-us/data/gg715119" href="http://msdn.microsoft.com/en-us/data/gg715119">http://msdn.microsoft.com/en-us/data/gg715119</a> and <a title="http://msdn.microsoft.com/en-us/data/gg685467" href="http://msdn.microsoft.com/en-us/data/gg685467">http://msdn.microsoft.com/en-us/data/gg685467</a> ).</p>
<p>Here is the Visual Studio Solution Explorer for the model:</p>
<p>&nbsp;</p>
<p><a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2011/11/image5.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2011/11/image_thumb5.png" alt="image" width="224" height="244" border="0" /></a></p>
<p>&nbsp;</p>
<p>and here is the model code in c#:</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<pre id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">namespace</span> SenchaDesignerExtension.Models{    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> UserInfo    {        [Key]        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]        <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> Id { get; set; }

        [MaxLengthAttribute(256)]        <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> Email { get; set; }

        [MaxLengthAttribute(256)]        <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> Name { get; set; }

    } }</pre>
</div>
<p>&nbsp;</p>
<p>and the actual repository which is in the file DbContext.cs (screen shot for brevity below, the code is attached in the example.</p>
<p>&nbsp;</p>
<p><a href="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2011/11/image6.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2011/11/image_thumb6.png" alt="image" width="462" height="279" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2011/11/04/building-an-senchas-extjs-4-0-mvc-application-with-microsofts-asp-net-mvc3-series-basics/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Meetup At Sencha Headquarters Tomorrow (Tuesday 8/23) in Redwood City Talking MVC in JavaScript!</title>
		<link>http://peterkellner.net/2011/08/22/meetup-at-sencha-headquarters-tomorrow-tuesday-823-in-redwood-city-talking-mvc-in-javascript/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=meetup-at-sencha-headquarters-tomorrow-tuesday-823-in-redwood-city-talking-mvc-in-javascript</link>
		<comments>http://peterkellner.net/2011/08/22/meetup-at-sencha-headquarters-tomorrow-tuesday-823-in-redwood-city-talking-mvc-in-javascript/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 00:21:50 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Code Camp]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2011/08/22/meetup-at-sencha-headquarters-tomorrow-tuesday-823-in-redwood-city-talking-mvc-in-javascript/</guid>
		<description><![CDATA[Tomorrow night (Tuesday, August 23rd), we are having another meetup to talk about using MVC inside of Sencha’s JavaScript products.&#160; I (Peter Kellner) will be talking for the first 20 minutes about how we are integrating the MVC pattern in our Silicon Valley Code Camp web site, then Ed Spencer from Sencha will follow on [...]]]></description>
			<content:encoded><![CDATA[<p>Tomorrow night (Tuesday, August 23rd), we are having another meetup to talk about using <a href="http://dev.sencha.com/deploy/ext-4.0.2a/docs/#/guide/application_architecture">MVC</a> inside of <a href="http://www.sencha.com/">Sencha’s</a> JavaScript products.&#160; I (Peter Kellner) will be talking for the first 20 minutes about how we are integrating the MVC pattern in our <a href="http://www.siliconvalley-codecamp.com/">Silicon Valley Code Camp web site</a>, then Ed Spencer from Sencha will follow on talking a lot more about MVC and best practices as well as Q&amp;A</p>
<p>Hope you can make it.&#160; Details are here:</p>
<p><a title="http://www.meetup.com/The-San-Francisco-ExtJS-Meetup-Group/events/28760211/" href="http://www.meetup.com/The-San-Francisco-ExtJS-Meetup-Group/events/28760211/">http://www.meetup.com/The-San-Francisco-ExtJS-Meetup-Group/events/28760211/</a></p>
<p>&#160;</p>
<p><a href="http://www.meetup.com/The-San-Francisco-ExtJS-Meetup-Group/events/28760211/"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2011/08/image3.png" width="640" height="388" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2011/08/22/meetup-at-sencha-headquarters-tomorrow-tuesday-823-in-redwood-city-talking-mvc-in-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Awesome Session Interest Viewer On Silicon Valley Code Camp Web Site</title>
		<link>http://peterkellner.net/2011/06/11/new-awesome-session-interest-viewer-on-silicon-valley-code-camp-web-site/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=new-awesome-session-interest-viewer-on-silicon-valley-code-camp-web-site</link>
		<comments>http://peterkellner.net/2011/06/11/new-awesome-session-interest-viewer-on-silicon-valley-code-camp-web-site/#comments</comments>
		<pubDate>Sat, 11 Jun 2011 14:29:09 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Code Camp]]></category>
		<category><![CDATA[Code Camp Web Site Series]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[ExtJS]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2011/06/11/new-awesome-session-interest-viewer-on-silicon-valley-code-camp-web-site/</guid>
		<description><![CDATA[Checkout the new session viewer we put together for Silicon Valley Code Camp.&#160; Using one of the very cool Sencha demonstration pages (Forms Dashboard), we build a page that let’s you easily navigate all the sessions as well as express interest in attending them.&#160; Come read about it as well as play with it. You [...]]]></description>
			<content:encoded><![CDATA[<p>Checkout the new <a href="http://www.siliconvalley-codecamp.com/SessionInterestChart.aspx">session viewer</a> we put together for <a href="http://www.siliconvalley-codecamp.com/">Silicon Valley Code Camp</a>.&#160; Using one of the very cool <a href="http://www.sencha.com/">Sencha</a> demonstration pages (<a href="http://dev.sencha.com/deploy/ext-4.0.2/examples/charts/FormDashboard.html">Forms Dashboard</a>), we build a page that let’s you easily navigate all the sessions as well as express interest in attending them.&#160; Come read about it as well as play with it. You don’t have to be logged in, but then you miss half the fun (selecting interest in sessions).&#160; The source code is right under your mouse. Press View Source once you are on the page and you’ll see how simple it was to build.</p>
<p>Also, if you have not registered for our code camp, being hold October 8th and 9th at <a href="http://www.foothill.fhda.edu/index.php">Foothill College</a> for the 6th year in a row, please do so now at our <a href="http://www.siliconvalley-codecamp.com/Register.aspx">registration page</a>.</p>
<p>Blogged <a href="http://blog.siliconvalley-codecamp.com/2011/06/11/a-new-page-for-showing-interest-in-sessions-and-counts-up/">here</a> and available <a href="http://siliconvalley-codecamp.com/SessionInterestChart.aspx">here</a></p>
<p>&#160;</p>
<p><a href="http://blog.siliconvalley-codecamp.com/2011/06/11/a-new-page-for-showing-interest-in-sessions-and-counts-up/"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://PetersBlogCDN.s3.amazonaws.com/wp/wp/wp-content/uploads/2011/06/image8.png" width="515" height="483" /></a></p>
<p>Let us know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2011/06/11/new-awesome-session-interest-viewer-on-silicon-valley-code-camp-web-site/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Building Hugely Performant Websites: Taking advantage of HTML5 Storage, 3rd DevConnections Orlando Presentation</title>
		<link>http://peterkellner.net/2011/03/31/building-hugely-performant-websites-taking-advantage-of-html5-storage-3rd-devconnections-orlando-presentation/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=building-hugely-performant-websites-taking-advantage-of-html5-storage-3rd-devconnections-orlando-presentation</link>
		<comments>http://peterkellner.net/2011/03/31/building-hugely-performant-websites-taking-advantage-of-html5-storage-3rd-devconnections-orlando-presentation/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 12:08:56 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Sencha]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2011/03/31/building-hugely-performant-websites-taking-advantage-of-html5-storage-3rd-devconnections-orlando-presentation/</guid>
		<description><![CDATA[&#160;
For my final of 3 presentations at DevConnections Orlando is about building a hugely performant web application with html5 storage.&#160; The app we built was a simple photo viewer that let you first look at hour images on line, then view them being pulled from local storage.&#160; Here are a couple screen shots of what [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>For my final of 3 presentations at <a href="http://www.devconnections.com/conf/sessions.aspx?s=159">DevConnections</a> Orlando is about building a hugely performant web application with html5 storage.&#160; The app we built was a simple photo viewer that let you first look at hour images on line, then view them being pulled from local storage.&#160; Here are a couple screen shots of what we built:</p>
<p><a href="http://peterkellner.net/FilesForWebDownload/Building-Hugely-Performant-Websites-Taki_6E8B/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/Building-Hugely-Performant-Websites-Taki_6E8B/image_thumb.png" width="201" height="244" /></a><a href="http://peterkellner.net/FilesForWebDownload/Building-Hugely-Performant-Websites-Taki_6E8B/image_3.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/Building-Hugely-Performant-Websites-Taki_6E8B/image_thumb_3.png" width="244" height="102" /></a></p>
<p>And, here is the Visual Studio 2010 Project File:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:e52bcc8c-8f42-4c4d-952d-3ec1008e07cd" class="wlWriterEditableSmartContent">
<div><a href="http://peterkellner.net/FilesForWebDownload/Building-Hugely-Performant-Websites-Taki_6E8B/MvcApplication1.zip" target="_self">Visual Studio Project File Zip</a></div>
</p>
</div>
<p>&#160;</p>
<p><a href="http://peterkellner.net/FilesForWebDownload/Building-Hugely-Performant-Websites-Taki_6E8B/image_4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/Building-Hugely-Performant-Websites-Taki_6E8B/image_thumb_4.png" width="159" height="244" /></a><a href="http://peterkellner.net/FilesForWebDownload/Building-Hugely-Performant-Websites-Taki_6E8B/IMAG0176.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="IMAG0176" border="0" alt="IMAG0176" src="http://peterkellner.net/FilesForWebDownload/Building-Hugely-Performant-Websites-Taki_6E8B/IMAG0176_thumb.jpg" width="244" height="148" /></a><a href="http://peterkellner.net/FilesForWebDownload/Building-Hugely-Performant-Websites-Taki_6E8B/IMAG0199.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="IMAG0199" border="0" alt="IMAG0199" src="http://peterkellner.net/FilesForWebDownload/Building-Hugely-Performant-Websites-Taki_6E8B/IMAG0199_thumb.jpg" width="244" height="148" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2011/03/31/building-hugely-performant-websites-taking-advantage-of-html5-storage-3rd-devconnections-orlando-presentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DevConnections Orlando, Build Advanced Web UIs with a Rich JavaScript UI Language</title>
		<link>http://peterkellner.net/2011/03/30/devconnections-orlando-build-advanced-web-uis-with-a-rich-javascript-ui-language/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=devconnections-orlando-build-advanced-web-uis-with-a-rich-javascript-ui-language</link>
		<comments>http://peterkellner.net/2011/03/30/devconnections-orlando-build-advanced-web-uis-with-a-rich-javascript-ui-language/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 14:26:30 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[.NET 4.0]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[MVC3]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Sencha]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2011/03/30/devconnections-orlando-build-advanced-web-uis-with-a-rich-javascript-ui-language/</guid>
		<description><![CDATA[To build fully-featured web applications that support complex interaction in a reasonable amount of time requires a high-end JavaScript library. Someday, maybe JQueryUI will be good for this, but for now, the choices are few and include ExtJS, Dojo, YUI and a handful of others. This session will use ExtJS as the example. We will [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>To build fully-featured web applications that support complex interaction in a reasonable amount of time requires a high-end JavaScript library. Someday, maybe JQueryUI will be good for this, but for now, the choices are few and include ExtJS, Dojo, YUI and a handful of others. This session will use ExtJS as the example. We will use Microsoft’s ASP.NET MVC as the data / CRUD layer and from that, we will build a typical LOB (line of business) application using complex UI elements. Those elements include layout managers, data grids, extensive validation, spinner controls and other advanced UI features. To get an idea of what I’m talking about, spend five minutes looking at the examples on the ExtJS web site demonstrating these advanced web UI features <a href="http://www.sencha.com/products/js/">http://www.sencha.com/products/js/</a>. You will be convinced that spending hundreds of hours trying to build something not nearly as well done as this is a waste of time when there are such excellent libraries already built for you.</p>
</blockquote>
<p>The source attached below for my demos.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:e83cd384-32b1-473e-a4b3-7328eea142cb" class="wlWriterEditableSmartContent">
<div><a href="http://peterkellner.net/FilesForWebDownload/P_8B12/DemoApp.zip" target="_self">Project Used For Demo (Including Notes as txt files)</a></div>
</p>
</div>
<p><a href="http://peterkellner.net/FilesForWebDownload/P_8B12/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/P_8B12/image_thumb.png" width="244" height="208" /></a></p>
<p>  <span id="more-1455"></span>
<p>Final <a href="http://sencha.com">ExtJS4</a> JavaScript (that didn’t quite work, but working now)</p>
<div id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #008000">// Load dependencies</span>Ext.require([    <span style="color: #006080">'Ext.data.*'</span>,    <span style="color: #006080">'Ext.button.*'</span>,    <span style="color: #006080">'Ext.form.*'</span>]);

Ext.onReady(<span style="color: #0000ff">function</span> () {

    <span style="color: #008000">// Date renderer</span>    <span style="color: #0000ff">var</span> dateConvert = <span style="color: #0000ff">function</span> (val, record) {        <span style="color: #0000ff">if</span> (val.split(<span style="color: #006080">'('</span>).length == 2) {            <span style="color: #0000ff">var</span> dateObj = <span style="color: #0000ff">new</span> Date(parseInt(val.substr(6)));            <span style="color: #0000ff">return</span> Ext.util.Date.format(dateObj, <span style="color: #006080">'m/d/Y'</span>);        } <span style="color: #0000ff">else</span> {            <span style="color: #0000ff">return</span> val;        }

    }

    Ext.regModel(<span style="color: #006080">'Users'</span>, {

        fields: [            { name: <span style="color: #006080">'Id'</span>, type: <span style="color: #006080">'int'</span> },            { name: <span style="color: #006080">'Username'</span> },            { name: <span style="color: #006080">'CreationDate'</span> },            { name: <span style="color: #006080">'FirstName'</span> },            { name: <span style="color: #006080">'LastName'</span> },            { name: <span style="color: #006080">'PlanExpirationDate'</span> }        ],        <span style="color: #008000">// Proxy</span>        proxy: {            type: <span style="color: #006080">'ajax'</span>,            url: <span style="color: #006080">'/Users/JsonData'</span>,            api: {                read :    <span style="color: #006080">'/Users/JsonData'</span>,                create :  <span style="color: #006080">'/Users/Create'</span>,                update :    <span style="color: #006080">'/Users/Edit'</span>,                destroy : <span style="color: #006080">'/Users/Delete'</span>            },            <span style="color: #008000">// Json Reader</span>            reader: {                type: <span style="color: #006080">'json'</span>,                idProperty: <span style="color: #006080">'Id'</span>,                totalProperty: <span style="color: #006080">'total'</span>,                root: <span style="color: #006080">'data'</span>            },            writer: {                type: <span style="color: #006080">'json'</span>,                encode: <span style="color: #0000ff">false</span>,                listful: <span style="color: #0000ff">true</span>,                writeAllFields: <span style="color: #0000ff">true</span>            },            headers: { <span style="color: #006080">'Content-Type'</span>: <span style="color: #006080">'application/json; charset=UTF-8'</span> }                            }

    });

    <span style="color: #0000ff">var</span> usersStore = <span style="color: #0000ff">new</span> Ext.data.Store({        model: <span style="color: #006080">'Users'</span>,        autoLoad: <span style="color: #0000ff">true</span>,        pageSize: 10    });

    <span style="color: #0000ff">var</span> gridForm = Ext.create(<span style="color: #006080">'Ext.form.FormPanel'</span>, {        id: <span style="color: #006080">'userFormPanel'</span>,        frame: <span style="color: #0000ff">true</span>,        title: <span style="color: #006080">'Users Data'</span>,        store: usersStore,        bodyPadding: 5,        width: 910,        layout: <span style="color: #006080">'column'</span>,    <span style="color: #008000">// Specifies that the items will now be arranged in columns</span>

        fieldDefaults: {            labelAlign: <span style="color: #006080">'left'</span>,            msgTarget: <span style="color: #006080">'side'</span>        },

        items: [{            columnWidth: 0.65,            xtype: <span style="color: #006080">'gridpanel'</span>,            id: <span style="color: #006080">'usersGrid'</span>,            store: usersStore,            height: 410,            title: <span style="color: #006080">'Users'</span>,

            headers: [        {            text: <span style="color: #006080">'User Name'</span>,            flex: 1,            sortable: <span style="color: #0000ff">true</span>,            dataIndex: <span style="color: #006080">'Username'</span>        },        {            text: <span style="color: #006080">'CreationDate'</span>,            width: 100,            sortable: <span style="color: #0000ff">true</span>,            renderer: dateConvert,            dataIndex: <span style="color: #006080">'CreationDate'</span>        },        {            text: <span style="color: #006080">'First Name'</span>,            width: 100,            sortable: <span style="color: #0000ff">true</span>,            dataIndex: <span style="color: #006080">'FirstName'</span>        },        {            text: <span style="color: #006080">'Last Name'</span>,            width: 100,            sortable: <span style="color: #0000ff">true</span>,            dataIndex: <span style="color: #006080">'LastName'</span>        },        {            text: <span style="color: #006080">'Plan Expiration Date'</span>,            width: 120,            sortable: <span style="color: #0000ff">true</span>,            renderer: dateConvert,            dataIndex: <span style="color: #006080">'PlanExpirationDate'</span>        }    ],

    listeners: {        selectionchange: <span style="color: #0000ff">function</span> (model, records) {            <span style="color: #0000ff">if</span> (records[0]) {                <span style="color: #0000ff">var</span> recordToLoad = {                    Username: records[0].data.Username,                    CreationDate: dateConvert(records[0].data.CreationDate),                    FirstName: records[0].data.FirstName,                    LastName: records[0].data.LastName,                    PlanExpirationDate: dateConvert(records[0].data.PlanExpirationDate)                }                <span style="color: #0000ff">this</span>.up(<span style="color: #006080">'form'</span>).getForm().setValues(recordToLoad);            }        }    },    bbar: <span style="color: #0000ff">new</span> Ext.PagingToolbar({        store: usersStore    })        }, {            columnWidth: 0.35,            margin: <span style="color: #006080">'0 0 0 10'</span>,            bodyStyle: {                margin: <span style="color: #006080">'4px'</span>            },            xtype: <span style="color: #006080">'form'</span>,            id: <span style="color: #006080">'userForm'</span>,            title: <span style="color: #006080">'Add / Edit User Details'</span>,            defaults: {                width: 260,                labelWidth: 120,                margin: <span style="color: #006080">'7px'</span>            },            defaultType: <span style="color: #006080">'textfield'</span>,            items: [{                fieldLabel: <span style="color: #006080">'User Name'</span>,                name: <span style="color: #006080">'Username'</span>            }, {                xtype: <span style="color: #006080">'datefield'</span>,                fieldLabel: <span style="color: #006080">'Creation Date'</span>,                name: <span style="color: #006080">'CreationDate'</span>            }, {                fieldLabel: <span style="color: #006080">'First Name'</span>,                name: <span style="color: #006080">'FirstName'</span>            }, {                fieldLabel: <span style="color: #006080">'Last Name'</span>,                name: <span style="color: #006080">'LastName'</span>            }, {                xtype: <span style="color: #006080">'datefield'</span>,                fieldLabel: <span style="color: #006080">'Plan Expiration Date'</span>,                name: <span style="color: #006080">'PlanExpirationDate'</span>            }],            buttons: [{                text: <span style="color: #006080">'Update Record'</span>,                scale: <span style="color: #006080">'medium'</span>,                handler: <span style="color: #0000ff">function</span> (btn, e) {                    <span style="color: #0000ff">var</span> userSelectionModel = Ext.getCmp(<span style="color: #006080">'usersGrid'</span>).getSelectionModel();                    <span style="color: #0000ff">if</span> (userSelectionModel.hasSelection()) {                        <span style="color: #008000">// get the form</span>                        <span style="color: #0000ff">var</span> formCmp = Ext.getCmp(<span style="color: #006080">'userForm'</span>);                        <span style="color: #008000">// get the form field values</span>                        <span style="color: #0000ff">var</span> formValues = formCmp.getForm().getValues();                        <span style="color: #008000">// get the selected record</span>                        <span style="color: #0000ff">var</span> recordSelection = userSelectionModel.getLastSelected();                        <span style="color: #008000">// update the record with the form fields</span>                        recordSelection.set(formValues)                        <span style="color: #008000">// sync store</span>                        usersStore.sync();                    }                }            }, {                text: <span style="color: #006080">'Add As New Record'</span>,                scale: <span style="color: #006080">'medium'</span>,                handler: <span style="color: #0000ff">function</span> (btn, e) {                    <span style="color: #008000">// get the form</span>                    <span style="color: #0000ff">var</span> formCmp = Ext.getCmp(<span style="color: #006080">'userForm'</span>);                    <span style="color: #008000">// get the form field values</span>                    <span style="color: #0000ff">var</span> formValues = formCmp.getForm().getValues();                    <span style="color: #008000">// add to the the store</span>                    usersStore.add(formValues);                    <span style="color: #008000">// sync with the store</span>                    usersStore.sync();                }            }, {                text: <span style="color: #006080">'Delete Record'</span>,                scale: <span style="color: #006080">'medium'</span>,                handler: <span style="color: #0000ff">function</span> (btn, e) {                    <span style="color: #008000">// get the user grid selection model</span>                    <span style="color: #0000ff">var</span> userSelectionModel = Ext.getCmp(<span style="color: #006080">'usersGrid'</span>).getSelectionModel();                    <span style="color: #008000">// check if there's a selection</span>                    <span style="color: #0000ff">if</span> (userSelectionModel.hasSelection()) {                        <span style="color: #008000">// remove the selected record</span>                        usersStore.remove(userSelectionModel.getLastSelected());                        usersStore.sync();                    }                }            }]        }],        renderTo: <span style="color: #006080">'extjs-grid'</span>    });

});</pre>
<p></div>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2011/03/30/devconnections-orlando-build-advanced-web-uis-with-a-rich-javascript-ui-language/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Learning Ext JS 3.2 From PACKT Is Another Winner!</title>
		<link>http://peterkellner.net/2011/01/02/learning-ext-js-3-2-from-packt-is-another-winner/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=learning-ext-js-3-2-from-packt-is-another-winner</link>
		<comments>http://peterkellner.net/2011/01/02/learning-ext-js-3-2-from-packt-is-another-winner/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 01:46:00 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Book Reviews]]></category>
		<category><![CDATA[ExtJS]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2011/01/02/learning-ext-js-3-2-from-packt-is-another-winner/</guid>
		<description><![CDATA[The same authors who write the original Learning Ext JS are back and definitely with a winner here.&#160; Just to start out, the book is about a third longer, has a new contributing author (Nigel White, aka “Animal” on the ExtJS Forums) and definitely packs a lot more content.&#160; You get the feeling these guys [...]]]></description>
			<content:encoded><![CDATA[<p>The same authors who write the original <a href="http://peterkellner.net/2008/11/28/extjs-bookreview/">Learning Ext JS</a> are back and definitely with a winner here.&#160; Just to start out, the book is about a third longer, has a new contributing author (Nigel White, aka “<a href="http://www.sencha.com/forum/member.php?10-Animal">Animal</a>” on the ExtJS Forums) and definitely packs a lot more content.&#160; You get the feeling these guys took the feedback they got on the first book and went to town.</p>
<p>To start with, they have lots and lots of examples covering a lot more areas. There is a lot more architectural discussions that really help in building high end <a href="http://www.sencha.com/products/js/">ExtJS</a> applications. Chapter 13 for example is completely devoted to code reuse (extending <a href="http://www.sencha.com/products/js/">ExtJS</a>).&#160; New features such as Ext.Direct are discussed extensively as well as the new graphics library (but don’t take that too seriously because it is being replaced with a non-flash version in ExtJS 4.0 which is coming out soon).</p>
<p>Overall, I give this book a solid A.&#160; I’m even fortunate enough to get mine signed by Shea Frederick, one of the authors (see picture below).</p>
<p>&#160;</p>
<p><a href="http://link.packtpub.com/0ZTq1v"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/c972592d3f9d_F772/image.png" width="233" height="244" /></a><a href="http://link.packtpub.com/0ZTq1v"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/c972592d3f9d_F772/image_3.png" width="200" height="244" /></a></p>
<p>&#160;</p>
<p>Hope you get a chance to read this great book!</p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2011/01/02/learning-ext-js-3-2-from-packt-is-another-winner/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Is There A Need For End-To-End ExtJS to Microsoft Server (MVC-C#, LOB) 4 Day Class? (Poll Enclosed)</title>
		<link>http://peterkellner.net/2010/05/04/lob-training-poll-using-extjs-dotnet-aspnet-mvc/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lob-training-poll-using-extjs-dotnet-aspnet-mvc</link>
		<comments>http://peterkellner.net/2010/05/04/lob-training-poll-using-extjs-dotnet-aspnet-mvc/#comments</comments>
		<pubDate>Wed, 05 May 2010 02:54:13 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[.NET 4.0]]></category>
		<category><![CDATA[ASP.NET 4.0]]></category>
		<category><![CDATA[Entity Framework]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[LINQ to SQL]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[OData]]></category>
		<category><![CDATA[Training]]></category>

		<guid isPermaLink="false">http://peterkellner.net/?p=1289</guid>
		<description><![CDATA[Over the past couple years, the focus of the web development I’ve been doing involves building highly flexible, highly scalable and straight forward web sites to implement and maintain Line of Business (LOB) applications.&#160; As you can probably tell from my posts, I’m very “practical” focused, and at the same time have a desire to [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past couple years, the focus of the web development I’ve been doing involves building highly flexible, highly scalable and straight forward web sites to implement and maintain <a href="http://en.wikipedia.org/wiki/Line_of_business">Line of Business</a> (LOB) applications.&#160; As you can probably tell from my posts, I’m very “practical” focused, and at the same time have a desire to build awesome web applications.</p>
<p>The technology pairing I’ve chosen is <a href="http://www.asp.net/mvc/whatisaspmvc/">Microsoft’s .Net platform with MVC</a> on the server, and <a href="http://www.extjs.com/">ExtJS</a> on the client.&#160; Though it’s possible to still use ExtJS with standard html/aspx pages, I’ve found the best combination is to use 100% <a href="http://www.javascript.com/">JavaScript</a> on the client (ExtJS) and have all the server side technology be 100% service based.&#160; I’ve used <a href="http://msdn.microsoft.com/en-us/library/bb425822.aspx">LINQ2SQL</a> extensively as well as <a href="http://msdn.microsoft.com/en-us/magazine/ee336128.aspx">Entity Framework</a> in the latest <a href="http://msdn.microsoft.com/en-us/vstudio/default.aspx">Visual Studio 2010</a> release.</p>
<p>The learning curve was quite steep to actually be able to efficiently build highly flexible, highly scalable applications using these technologies, but now that I know it, I wouldn’t have it any other way.</p>
<p>I’m considering putting together a series of <strong>4 Day Classes</strong> around the country (or even world) that would basically teach people the methods and patterns I’ve learned and essentially leap frog a development team into being able to quickly do what it has taken me years to figure out.&#160; I’ve been fortunate enough to know the top 1% instructors and I’m sure with the right incentive, can get them to join me in both putting together these classes as well as teaching them.</p>
<p> <span id="more-1289"></span>
<p>So, my question is:</p>
<p> [poll id=2]
<p>I really appreciate your feedback.&#160; If I go down this path, it will be a lot of work and it would be nice to know if people are really interested.&#160; I know for myself, I&#8217; would have gone to something like this 2 years ago and it would have saved me a lot of time.</p>
<p>Thanks for your feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2010/05/04/lob-training-poll-using-extjs-dotnet-aspnet-mvc/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Great ExtJS Meetup in Palo Alto Tonight at ExtJS&#8217;s New Office</title>
		<link>http://peterkellner.net/2010/02/24/extjs-meetup-paloalto-office/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=extjs-meetup-paloalto-office</link>
		<comments>http://peterkellner.net/2010/02/24/extjs-meetup-paloalto-office/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 06:46:54 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2010/02/24/extjs-meetup-paloalto-office/</guid>
		<description><![CDATA[Yet another great meetup with the ExtJS San Francisco Group (though not meeting in San Francisco this time).&#160; ExtJS has moved it’s main office and developers out here to Palo Alto, California and volunteered to host our meetup.&#160; They provided pizza and beer and I’d say it was our most successful event so far!&#160;
http://www.meetup.com/The-San-Francisco-ExtJS-Meetup-Group/calendar/12527913/
Most of [...]]]></description>
			<content:encoded><![CDATA[<p>Yet another great meetup with the ExtJS San Francisco Group (though not meeting in San Francisco this time).&#160; ExtJS has moved it’s main office and developers out here to Palo Alto, California and volunteered to host our meetup.&#160; They provided pizza and beer and I’d say it was our most successful event so far!&#160;</p>
<p><a title="http://www.meetup.com/The-San-Francisco-ExtJS-Meetup-Group/calendar/12527913/" href="http://www.meetup.com/The-San-Francisco-ExtJS-Meetup-Group/calendar/12527913/">http://www.meetup.com/The-San-Francisco-ExtJS-Meetup-Group/calendar/12527913/</a></p>
<p>Most of the ExtJS team stayed until after 9.&#160; The team introduced themselves to start the event, then we got presentations of all kind of cool upcoming technologies from ExtJS that we promised not share because it was top secret. <img src='http://PetersBlogCDN.s3.amazonaws.com/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>I’ve posted more pictures to FaceBook at the following URL:&#160; <a href="http://www.facebook.com/r.php?i=1&amp;invid=741014917&amp;key=32D3XZ5ZRTXC2GLHUB5VPVWTSRKK4T" target="_blank">Click Here</a>&#160; I believe you will have to create a facebook account if you don’t have one to view them.&#160; It would be great if everyone can Tag themselves so next time we will all know each other.</p>
<p>Abe invited us all back so I’m sure we will have the chance to all see each other again.&#160; Here are a couple shots, including the rock band at the end of he meeting starring Tommy.</p>
<p><a href="http://peterkellner.net/FilesForWebDownload/GreatExtJSMeetupinPaloAltoTonightatExtJS_13F51/PeterStartingMeeting.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="PeterStartingMeeting" border="0" alt="PeterStartingMeeting" src="http://peterkellner.net/FilesForWebDownload/GreatExtJSMeetupinPaloAltoTonightatExtJS_13F51/PeterStartingMeeting_thumb.jpg" width="387" height="291" /></a></p>
<p>(above picture courtesy of <a href="http://mankzblog.wordpress.com/2010/02/27/pictures-from-latest-ext-js-meetup-in-palo-alto-at-ext-hq/" target="_blank">Mats</a>)</p>
<p> <span id="more-526"></span>
<p><a href="http://peterkellner.net/FilesForWebDownload/GreatExtJSMeetupinPaloAltoTonightatExtJS_13F51/DSC_0100.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSC_0100" border="0" alt="DSC_0100" src="http://peterkellner.net/FilesForWebDownload/GreatExtJSMeetupinPaloAltoTonightatExtJS_13F51/DSC_0100_thumb.jpg" width="389" height="259" /></a></p>
<p><a href="http://peterkellner.net/FilesForWebDownload/GreatExtJSMeetupinPaloAltoTonightatExtJS_13F51/DSC_0098.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSC_0098" border="0" alt="DSC_0098" src="http://peterkellner.net/FilesForWebDownload/GreatExtJSMeetupinPaloAltoTonightatExtJS_13F51/DSC_0098_thumb.jpg" width="403" height="268" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2010/02/24/extjs-meetup-paloalto-office/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Lunch With Mats Bryntse Today, Author of Ext Scheduler. Talked about Code Camp Integration and January 7th Meetup</title>
		<link>http://peterkellner.net/2009/12/23/lunch-with-mats-bryntse-today-author-of-ext-scheduler-talked-about-code-camp-integration-and-january-7th-meetup/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lunch-with-mats-bryntse-today-author-of-ext-scheduler-talked-about-code-camp-integration-and-january-7th-meetup</link>
		<comments>http://peterkellner.net/2009/12/23/lunch-with-mats-bryntse-today-author-of-ext-scheduler-talked-about-code-camp-integration-and-january-7th-meetup/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 23:11:18 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[ExtJS]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2009/12/23/lunch-with-mats-bryntse-today-author-of-ext-scheduler-talked-about-code-camp-integration-and-january-7th-meetup/</guid>
		<description><![CDATA[&#160;
Mats and I met today in Palo Alto for lunch to talk about the upcoming Meetup January 7th (in two weeks) at ClickTime.&#160; We’re looking forward to both Mats presenting his Ext Scheduler, seeing some cool tricks from a surprise Ext Core Developer, and of course seeing old friends.
We also talked about Mats incorporating his [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>Mats and I met today in Palo Alto for lunch to talk about the upcoming <a href="http://www.meetup.com/The-San-Francisco-ExtJS-Meetup-Group/calendar/12088888/">Meetup January 7th</a> (in two weeks) at ClickTime.&#160; We’re looking forward to both Mats presenting his <a href="http://www.ext-scheduler.com/examples.html">Ext Scheduler</a>, seeing some cool tricks from a surprise <a href="http://www.extjs.com/">Ext</a> Core Developer, and of course seeing old friends.</p>
<p>We also talked about Mats incorporating his schedule component into the <a href="http://www.siliconvalley-codecamp.com/">Silicon Valley Code Camp</a> Web site.&#160; We had 145 sessions over 2 days so it’s a target rich environment for the schedule component.&#160; I can’t wait to see how it looks on the site.&#160; Stay tuned for more blog posts.</p>
<p> <span id="more-400"></span>
<p>And here is Mats!</p>
<p><a href="http://peterkellner.net/FilesForWebDownload/Lun.TalkedaboutCodeCampIntegrationandJan_D58E/mats1.png.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="mats1.png" border="0" alt="mats1.png" src="http://peterkellner.net/FilesForWebDownload/Lun.TalkedaboutCodeCampIntegrationandJan_D58E/mats1.png_thumb.jpg" width="244" height="237" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2009/12/23/lunch-with-mats-bryntse-today-author-of-ext-scheduler-talked-about-code-camp-integration-and-january-7th-meetup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Awesome Ext Scheduling Component Built By Mats Bryntse</title>
		<link>http://peterkellner.net/2009/12/02/extjs-scheduling-component/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=extjs-scheduling-component</link>
		<comments>http://peterkellner.net/2009/12/02/extjs-scheduling-component/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 02:10:25 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[ExtJS]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2009/12/02/extjs-scheduling-component/</guid>
		<description><![CDATA[&#160;
My friend Mats Bryntse, who you may know from our our San Francisco ExtJS Meetup group based in San Francisco, has written a very pretty impressive scheduling component built for the Ext JS framework.
http://www.ext-scheduler.com/examples.html
You can choose between several different time resolutions and easily change the styling since all items shown in the grid are created [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>My friend Mats Bryntse, who you may know from our our San Francisco <a href="http://www.meetup.com/The-San-Francisco-ExtJS-Meetup-Group/">ExtJS Meetup</a> group based in San Francisco, has written a very pretty impressive scheduling component built for the Ext JS framework.</p>
<p><a title="http://www.ext-scheduler.com/examples.html" href="http://www.ext-scheduler.com/examples.html">http://www.ext-scheduler.com/examples.html</a></p>
<p>You can choose between several different time resolutions and easily change the styling since all items shown in the grid are created by a standard Ext Template. The interaction is pretty straight forward, to create a new item in the grid, you just click somewhere and drag. Can’t be any easier. To modify an item you can both resize and use drag and drop. If you are looking for a way to schedule your resources I recommend you check this UX out!</p>
<p> <span id="more-390"></span>
<p><a href="http://peterkellner.net/FilesForWebDownload/AwesomeSchedulingComponentBuiltByMatsBry_11BAD/clip_image002.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://peterkellner.net/FilesForWebDownload/AwesomeSchedulingComponentBuiltByMatsBry_11BAD/clip_image002_thumb.jpg" width="405" height="204" /></a></p>
<p>Mats is a great <a href="http://extjs.com">ExtJS</a> developer who builds the highest quality stuff so definitely worth your time if you need a component like this.</p>
<p>Good Luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2009/12/02/extjs-scheduling-component/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xmarks (Formerly FoxMarks) now Syncs Between IE8 as well as FireFox</title>
		<link>http://peterkellner.net/2009/08/15/xmarks-sync-firefox-ie8/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=xmarks-sync-firefox-ie8</link>
		<comments>http://peterkellner.net/2009/08/15/xmarks-sync-firefox-ie8/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 15:09:12 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[IE8]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2009/08/15/xmarks-sync-firefox-ie8/</guid>
		<description><![CDATA[I’ve been a very happy use of Foxmarks over the years for keeping my bookmarks in FireFox up to date.&#160; Turns out, they’ve renamed themselves to xmarks I guess so that people don’t assume they just do Firefox.
Basically, the way it works is you create an account on their server, then for firefox you download [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been a very happy use of Foxmarks over the years for keeping my bookmarks in <a href="http://www.mozilla.com/en-US/firefox/ie.html">FireFox</a> up to date.&#160; Turns out, they’ve renamed themselves to <a href="http://www.xmarks.com/">xmarks</a> I guess so that people don’t assume they just do Firefox.</p>
<p>Basically, the way it works is you create an account on their server, then for firefox you download a plugin, and for IE you download an extension.&#160; Like magic, your bookmarks just stay in sync!</p>
<p> <span id="more-341"></span>
<p>Another nice things is you can manager your book marks on line.&#160; The Xmarks folks used <a href="http://extjs.com">ExtJS</a> (my favorite JavaScript library to build their interface, and they did a very nice job).</p>
<p>One thing I find a little unusual is it asked for a $5 donation.&#160; I noticed that Mitchell Kapor is the founder (also inventor of Lotus in 1982).&#160; I have trouble believing he needs my $5.</p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2009/08/15/xmarks-sync-firefox-ie8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Two Presentations Today at VSLive in Las Vegas (ExtJS, Then High Performance ASP.NET Web Sites)</title>
		<link>http://peterkellner.net/2009/06/08/vslive-las-vegas-presentations/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=vslive-las-vegas-presentations</link>
		<comments>http://peterkellner.net/2009/06/08/vslive-las-vegas-presentations/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 05:41:51 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[ASP.NET 3.5]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[Presentations]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2009/06/08/vslive-las-vegas-presentations/</guid>
		<description><![CDATA[Today was my first time doing 2 presentations during the same day at a professional conference (VSLive, Las Vegas).&#160; Both sessions were fun to present and hopefully the audience got as much out of it as I did.&#160; Lots of great questions, several twitter posts and best of all, they both finished on time (that [...]]]></description>
			<content:encoded><![CDATA[<p>Today was my first time doing 2 presentations during the same day at a professional conference (<a href="http://vslive.com/2009/lasvegas/aspnet.aspx">VSLive, Las Vegas</a>).&#160; Both sessions were fun to present and hopefully the audience got as much out of it as I did.&#160; Lots of great questions, several twitter posts and best of all, they both finished on time (that is, I finished the material at the time I meant to!).</p>
<p>Here is the material for the first presentation:</p>
<p> <span id="more-319"></span>
<p><strong>Build Blazingly Fast ASP.NET Apps with 100% Clientside UI ExtJS</strong></p>
<blockquote><h6>Intermediate</h6>
<p>Need a web application that has the responsiveness and interactivity of a forms app but still looks and feels like a web? One of the best kept secrets (at least to the Microsoft community) is ExtJS. It&#8217;s a different paradigm then we are all use to, but the results are spectacular. <a href="http://extjs.com/deploy/dev/examples/samples.html">Take a look at this url</a> and you will see as well as learn how to do this yourself. The hardest part is shuttling the data back and forth. A lot of this session will be talking about how to do a real world app that does this. Once you go this way, you&#8217;ll be gone from serverside forms for almost ever.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:b6cf28fe-f692-47a2-af5a-540c990696b2" class="wlWriterSmartContent">
<p>Presentation Files <a href="http://peterkellner.net/FilesForWebDownload/MyTwoPresentationsTodayatVSL.NETWebSites_13F02/Vegas09extjs.zip" target="_blank">Download</a></p>
</p></div>
<p>&#160;</p>
</blockquote>
<p><strong>Building High Performance ASP.NET Web Applications </strong></p>
<blockquote><h6>Intermediate</h6>
<p>Topics will include appropriate use of Cache and Session State, as well as how and when to use them. Viewstate management and methods to minimize its use will be discussed. Code to pop up a warning when a threshold is met in development will be shown. When and how to take advantage of Server Farms will be discussed, as well as trouble shooting techniques to find problems. The evils of Server Affinity, as well as a common pattern for caching database queries will be shown to be wrong. Time permitting, we will talk about using Microsoft’s Ajax.asp.net with UpdatePanel and webservices and how these affect performance and scalability.</p>
<p>&#160;</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:5cd78bd5-c095-4d51-a9a1-130871cbdc92" class="wlWriterSmartContent">
<p>Presentation Files <a href="http://peterkellner.net/FilesForWebDownload/MyTwoPresentationsTodayatVSL.NETWebSites_13F02/Vegas09Perf.zip" target="_blank">Download</a></p>
</p></div>
</blockquote>
<p>&#160;</p>
<table border="0" cellspacing="0" cellpadding="2" width="597">
<tbody>
<tr colspan="2">
<td valign="top" width="583"><a href="http://peterkellner.net/FilesForWebDownload/MyTwoPresentationsTodayatVSL.NETWebSites_13F02/vslive1.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="vslive1" border="0" alt="vslive1" src="http://peterkellner.net/FilesForWebDownload/MyTwoPresentationsTodayatVSL.NETWebSites_13F02/vslive1_thumb.jpg" width="502" height="392" /></a> </td>
</tr>
<tr>
<td valign="top" width="583">&#160;</td>
<td valign="top" width="6">&#160;</td>
<p><a href="http://peterkellner.net/FilesForWebDownload/MyTwoPresentationsTodayatVSL.NETWebSites_13F02/IMG_1389.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IMG_1389" border="0" alt="IMG_1389" src="http://peterkellner.net/FilesForWebDownload/MyTwoPresentationsTodayatVSL.NETWebSites_13F02/IMG_1389_thumb.jpg" width="244" height="184" /></a> <a href="http://peterkellner.net/FilesForWebDownload/MyTwoPresentationsTodayatVSL.NETWebSites_13F02/vslive3.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="vslive3" border="0" alt="vslive3" src="http://peterkellner.net/FilesForWebDownload/MyTwoPresentationsTodayatVSL.NETWebSites_13F02/vslive3_thumb.jpg" width="244" height="184" /></a>
</p>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2009/06/08/vslive-las-vegas-presentations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My ExtJS Presentation at Microsoft&#8217;s Office in San Francisco Last Night</title>
		<link>http://peterkellner.net/2009/05/21/baydotnet-presentation-extjs-aspnet-membership-profile-provider/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=baydotnet-presentation-extjs-aspnet-membership-profile-provider</link>
		<comments>http://peterkellner.net/2009/05/21/baydotnet-presentation-extjs-aspnet-membership-profile-provider/#comments</comments>
		<pubDate>Thu, 21 May 2009 19:07:27 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[ASP.NET 3.5]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[ExtJS]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2009/05/21/baydotnet-presentation-extjs-aspnet-membership-profile-provider/</guid>
		<description><![CDATA[Last night, I gave a 90 minute presentation on how to use ExtJS with ASP.NET serving up the data at the San Francisco Microsoft Office to what seemed to be between 50 and 100 people.&#160; I started out with just a basic overview of ExtJS, starting with a hello world app, then, finally building it [...]]]></description>
			<content:encoded><![CDATA[<p>Last night, I gave a <a href="http://peterkellner.net/2009/04/20/speaking-aspnet-extjs-microsoft-sanfrancisco-high-perf-javascript/">90 minute presentation</a> on how to use ExtJS with ASP.NET serving up the data at the <a href="http://www.baynetug.org/DesktopModules/DetailXEvents.aspx?ItemID=378&amp;mid=49">San Francisco Microsoft Office</a> to what seemed to be between 50 and 100 people.&#160; I started out with just a basic overview of <a href="http://extjs.com/">ExtJS</a>, starting with a hello world app, then, finally building it into a full blown paging, updating, inserting and deleting Membership Management editor.&#160; The final application is actually here if you want to see how it runs:</p>
<p><a href="http://peterkellner.net/FilesForWebDownload/MyExtJSPresentationatMicrosoftsOfficeinS_AA13/PeterKellnerMSPodium.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="PeterKellnerMSPodium" border="0" alt="PeterKellnerMSPodium" src="http://peterkellner.net/FilesForWebDownload/MyExtJSPresentationatMicrosoftsOfficeinS_AA13/PeterKellnerMSPodium_thumb.jpg" width="244" height="184" /></a></p>
<p> <span id="more-313"></span>
<p><a title="http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorEAddDeleteToolbar.html" href="http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorEAddDeleteToolbar.html">http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorEAddDeleteToolbar.html</a></p>
<p><a href="http://peterkellner.net/FilesForWebDownload/MyExtJSPresentationatMicrosoftsOfficeinS_AA13/pagingextjs.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="pagingextjs" border="0" alt="pagingextjs" src="http://peterkellner.net/FilesForWebDownload/MyExtJSPresentationatMicrosoftsOfficeinS_AA13/pagingextjs_thumb.png" width="226" height="244" /></a></p>
<p>For me, it was a long day.&#160; I flew home from Chicago in the morning, went to work in the afternoon, and did the presentation that night.&#160; I decided to upgrade the source to the prelease V3 on the airplane which turned out to be a mistake because some of the demos did not quit work as I expected.&#160; That, combined with I had forgotten to plug my notebook in before the presentation and when I realized that (by almost running out of battery), I plugged my computer in and it immediately blue screened.&#160; Arg. Not what you really want when you have all your windows open and in demo mode.&#160; At least that was the end of m powerpoint screen.&#160; Who needs that anyhow.</p>
<p>Several people asked for the example code I showed.&#160; It’s not that well organized and it’s using a pre-release of ExtJS version 3.0. With those excuses pre-made, here is the code:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:c118b673-0e48-459a-9dc2-c92101f4e5f1" class="wlWriterSmartContent">
<p><a href="http://peterkellner.net/FilesForWebDownload/MyExtJSPresentationatMicrosoftsOfficeinS_AA13/BayNetExtJSPresentationWebProject.zip" target="_blank">Bay.Net Presentation Visual Studio Project</a></p>
</p></div>
<p>Finally, some more pictures…</p>
<p><a href="http://peterkellner.net/FilesForWebDownload/MyExtJSPresentationatMicrosoftsOfficeinS_AA13/IThoughtTheyCameToSeeMe.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IThoughtTheyCameToSeeMe" border="0" alt="IThoughtTheyCameToSeeMe" src="http://peterkellner.net/FilesForWebDownload/MyExtJSPresentationatMicrosoftsOfficeinS_AA13/IThoughtTheyCameToSeeMe_thumb.jpg" width="244" height="184" /></a> <a href="http://peterkellner.net/FilesForWebDownload/MyExtJSPresentationatMicrosoftsOfficeinS_AA13/KimGreenleeMSPodium.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="KimGreenleeMSPodium" border="0" alt="KimGreenleeMSPodium" src="http://peterkellner.net/FilesForWebDownload/MyExtJSPresentationatMicrosoftsOfficeinS_AA13/KimGreenleeMSPodium_thumb.jpg" width="244" height="184" /></a></p>
<p><a href="http://peterkellner.net/FilesForWebDownload/MyExtJSPresentationatMicrosoftsOfficeinS_AA13/BayNetPresentationPartOfCrowd.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="BayNetPresentationPartOfCrowd" border="0" alt="BayNetPresentationPartOfCrowd" src="http://peterkellner.net/FilesForWebDownload/MyExtJSPresentationatMicrosoftsOfficeinS_AA13/BayNetPresentationPartOfCrowd_thumb.jpg" width="244" height="184" /></a> <a href="http://peterkellner.net/FilesForWebDownload/MyExtJSPresentationatMicrosoftsOfficeinS_AA13/BrunoInSetupMode.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="BrunoInSetupMode" border="0" alt="BrunoInSetupMode" src="http://peterkellner.net/FilesForWebDownload/MyExtJSPresentationatMicrosoftsOfficeinS_AA13/BrunoInSetupMode_thumb.jpg" width="244" height="184" /></a></p>
<p>Thanks to <a href="http://www.baynetug.org/DesktopDefault.aspx">Bay.Net</a> locally lead by Kim Greenlee for sponsoring the event, Thanks to <a href="http://www.jetbrains.com/">JetBrains</a> for providing free copies of IDEA for doing Great JavaScript editing, Thanks to the authors of “<a href="http://www.amazon.com/exec/obidos/ASIN/1847195148/petkelsblo-20">Learning ExtJS</a>” for donating a couple free books, and thanks to <a href="http://extjs.com/">ExtJS</a> for giving a free developer license.</p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2009/05/21/baydotnet-presentation-extjs-aspnet-membership-profile-provider/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Another Great ExtJS Meetup in San Francisco!</title>
		<link>http://peterkellner.net/2009/05/21/extjs-meetup-sanfrancisco-v3-direct-rest/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=extjs-meetup-sanfrancisco-v3-direct-rest</link>
		<comments>http://peterkellner.net/2009/05/21/extjs-meetup-sanfrancisco-v3-direct-rest/#comments</comments>
		<pubDate>Thu, 21 May 2009 18:45:20 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[ExtJS]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2009/05/21/extjs-meetup-sanfrancisco-v3-direct-rest/</guid>
		<description><![CDATA[ Last week, we had our 5th Meetup of the San Francisco ExtJS Meetup Group at ClickTime.&#160; Xiaohui Chen and I both presented different aspects of some new features in ExtJS V3. Specifically, I showed you to use the new Proxy Writer to do restful CRUD operations from ExtJS to Asp.Net with ease, and Xioahui [...]]]></description>
			<content:encoded><![CDATA[<p> Last week, we had our 5th Meetup of the <a href="http://www.meetup.com/The-San-Francisco-ExtJS-Meetup-Group/">San Francisco ExtJS Meetup</a> Group at <a href="http://www.clicktime.com/">ClickTime</a>.&#160; Xiaohui Chen and I both presented different aspects of some new features in ExtJS V3. Specifically, I showed you to use the new Proxy Writer to do restful CRUD operations from ExtJS to Asp.Net with ease, and Xioahui presented using the new Direct (RPC calls) ExtJS 3 feature for taking those same CRUD calls but passing them through an RPC gateway rather than through REST type calls.</p>
<p>Lots of great feedback from the group.&#160; Here are some pictures of us.&#160; ClickTime provided pizza and soda (and also BTW, is looking for a great ExtJS/JavaScript/.Net engineer).</p>
<p> <span id="more-312"></span>
<p><a href="http://peterkellner.net/FilesForWebDownload/AnotherGreatExtJSMeetupinSanFrancisco_A545/ExtJSMeetup1.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ExtJSMeetup1" border="0" alt="ExtJSMeetup1" src="http://peterkellner.net/FilesForWebDownload/AnotherGreatExtJSMeetupinSanFrancisco_A545/ExtJSMeetup1_thumb.jpg" width="244" height="184" /></a> <a href="http://peterkellner.net/FilesForWebDownload/AnotherGreatExtJSMeetupinSanFrancisco_A545/XiaoHuiPresentingExtJSMeetup.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="XiaoHuiPresentingExtJSMeetup" border="0" alt="XiaoHuiPresentingExtJSMeetup" src="http://peterkellner.net/FilesForWebDownload/AnotherGreatExtJSMeetupinSanFrancisco_A545/XiaoHuiPresentingExtJSMeetup_thumb.jpg" width="244" height="184" /></a></p>
<p><a href="http://peterkellner.net/FilesForWebDownload/AnotherGreatExtJSMeetupinSanFrancisco_A545/IMG_1359.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IMG_1359" border="0" alt="IMG_1359" src="http://peterkellner.net/FilesForWebDownload/AnotherGreatExtJSMeetupinSanFrancisco_A545/IMG_1359_thumb.jpg" width="244" height="184" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2009/05/21/extjs-meetup-sanfrancisco-v3-direct-rest/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ExtJS Meetup Tonight in San Francisco, Sample URLs of Running Code Here</title>
		<link>http://peterkellner.net/2009/05/14/extjs-meetup-aspnet-code-samples/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=extjs-meetup-aspnet-code-samples</link>
		<comments>http://peterkellner.net/2009/05/14/extjs-meetup-aspnet-code-samples/#comments</comments>
		<pubDate>Thu, 14 May 2009 14:47:59 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[ASP.NET 2.0]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[ObjectDataSource]]></category>
		<category><![CDATA[Speaking]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2009/05/14/extjs-meetup-aspnet-code-samples/</guid>
		<description><![CDATA[ At tonight&#8217;s meet up, we will be having several short presentations on the new features in ExtJS version 3.0.&#160; For my short presentation, I will be showing how to build a simple asp.net application that lets you Create, Update, Delete and Edit Membership data using the ASP.NET built in membership providers.&#160; I will be [...]]]></description>
			<content:encoded><![CDATA[<p> At tonight&#8217;s meet up, we will be having several short presentations on the new features in <a href="http://extjs.com">ExtJS</a> version 3.0.&#160; For my short presentation, I will be showing how to build a simple asp.net application that lets you Create, Update, Delete and Edit Membership data using the ASP.NET built in membership providers.&#160; I will be leverage code from an MSDN article I wrote a while back here along with the URL to the meetup location.</p>
<p><a title="http://www.meetup.com/The-San-Francisco-ExtJS-Meetup-Group/calendar/10302891/" href="http://www.meetup.com/The-San-Francisco-ExtJS-Meetup-Group/calendar/10302891/">http://www.meetup.com/The-San-Francisco-ExtJS-Meetup-Group/calendar/10302891/</a></p>
<p><a title="http://msdn.microsoft.com/en-us/library/aa478947.aspx" href="http://msdn.microsoft.com/en-us/library/aa478947.aspx">http://msdn.microsoft.com/en-us/library/aa478947.aspx</a></p>
<p>My plan is to do a progression where I start with a trivial GridPanel, then work myself in 5 steps to a full working membership editor that looks like this:</p>
<p> <span id="more-308"></span>
<p><a href="http://peterkellner.net/FilesForWebDownload/ExtJSMeetupTonightinSanFranciscoHereisas_6DA2/image.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/ExtJSMeetupTonightinSanFranciscoHereisas_6DA2/image_thumb.png" width="392" height="425" /></a></p>
<p>&#160;</p>
<p>If you want to to run the code I will be explaining tonight, here are some links:</p>
<p><a title="http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorASimpleGrid.html" href="http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorASimpleGrid.html">http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorASimpleGrid.html</a></p>
<p><a title="http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorBMoreGrid.html" href="http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorBMoreGrid.html">http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorBMoreGrid.html</a></p>
<p><a title="http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorCMoreGridWithPaging.html" href="http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorCMoreGridWithPaging.html">http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorCMoreGridWithPaging.html</a></p>
<p><a title="http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorDMoreGridEditing.html" href="http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorDMoreGridEditing.html">http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorDMoreGridEditing.html</a></p>
<p><a title="http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorEAddDeleteToolbar.html" href="http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorEAddDeleteToolbar.html">http://aspnetextjsdemo.peterkellner.net/ExtJSProfileEditorEAddDeleteToolbar.html</a></p>
<p>If you want a more complete demonstration of ExtJS in general along with more details of the code, I’m presenting a full length version of this at he Bay.Net Meeting in Microsoft next Wednesday evening.&#160; Here are the full details.&#160; These events are both community events are free.</p>
<p><a title="http://www.baynetug.org/DesktopModules/DetailXEvents.aspx?ItemID=378&amp;mid=49" href="http://www.baynetug.org/DesktopModules/DetailXEvents.aspx?ItemID=378&amp;mid=49">http://www.baynetug.org/DesktopModules/DetailXEvents.aspx?ItemID=378&amp;mid=49</a></p>
<p>Hope to see you at one of the events!</p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2009/05/14/extjs-meetup-aspnet-code-samples/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How to Set JavaScript Programmatically on a Page in ASP.NET with Parameters</title>
		<link>http://peterkellner.net/2009/05/03/including-javascript-aspnet-pageload-clientscriptmanager/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=including-javascript-aspnet-pageload-clientscriptmanager</link>
		<comments>http://peterkellner.net/2009/05/03/including-javascript-aspnet-pageload-clientscriptmanager/#comments</comments>
		<pubDate>Sun, 03 May 2009 23:42:50 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[ASP.NET 3.5]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2009/05/03/including-javascript-aspnet-pageload-clientscriptmanager/</guid>
		<description><![CDATA[Programmatically setting JavaScript into an ASP.NET page is very straight forward when you do it in code.&#160; That is, in my case, I simply put it in the Page_Load event of the page and have it load from there.&#160; I’m currently working on an ExtJS project that requires me to show some details on a [...]]]></description>
			<content:encoded><![CDATA[<p>Programmatically setting <a href="http://JavaScript.org">JavaScript</a> into an <a href="http://asp.net">ASP.NET</a> page is very straight forward when you do it in code.&#160; That is, in my case, I simply put it in the Page_Load event of the page and have it load from there.&#160; I’m currently working on an <a href="http://extjs.com">ExtJS</a> project that requires me to show some details on a page that I want to show with <a href="http://www.webopedia.com/TERM/J/JavaScript.html">JavaScript</a>.&#160; I’ve nicely modularized all the JavaScript into a name space so the code that I want to include on my ASP.NET Page looks like the following:</p>
<div class="csharpcode">
<pre class="alt">&lt;script type=<span class="str">&quot;text/javascript&quot;</span> language=<span class="str">&quot;javascript&quot;</span> &gt;</pre>
<pre>    ASPWeb.newsGrid.loadTypeId = 229490;</pre>
<pre class="alt">    ASPWeb.newsGrid.init();</pre>
<pre>&lt;/script&gt;</pre>
</div>
<p><span id="more-300"></span></p>
<p>To put the same code in, but substitute the loadTypeId with something meanful, here is the C# code you need to put in your Page_Load C# code.</p>
<div class="csharpcode">
<pre class="alt">  <span class="kwrd">protected</span> <span class="kwrd">void</span> Page_Load(<span class="kwrd">object</span> sender, EventArgs e)</pre>
<pre>        {</pre>
<pre class="alt">            <span class="kwrd">if</span> (!IsPostBack)</pre>
<pre>            {</pre>
<pre class="alt">                LabelEntityType.Text = EntityTypeId.ToString();</pre>
<pre>                LabelEntityId.Text = EntityId.ToString();</pre>
<pre class="alt">            }</pre>
<pre>            <span class="rem">// The JavaScript needs to be registed on every post back.  Not just first time.</span></pre>
<pre class="alt">            <span class="rem">// Define the name and type of the client scripts on the page.</span></pre>
<pre>            <span class="kwrd">const</span> <span class="kwrd">string</span> csname1 = <span class="str">&quot;LoadDetailsGridScript&quot;</span>;</pre>
<pre class="alt">            Type cstype = <span class="kwrd">this</span>.GetType();</pre>
<pre>            <span class="rem">// Get a ClientScriptManager reference from the Page class.</span></pre>
<pre class="alt">            ClientScriptManager cs = Page.ClientScript;</pre>
<pre>            <span class="rem">// Check to see if the startup script is already registered.</span></pre>
<pre class="alt">            <span class="kwrd">if</span> (!cs.IsStartupScriptRegistered(cstype, csname1))</pre>
<pre>            {</pre>
<pre class="alt">                <span class="rem">//ASPWeb.newsGrid.loadTypeId = 229490;</span></pre>
<pre>                <span class="rem">//ASPWeb.newsGrid.init();</span></pre>
<pre class="alt">                <span class="kwrd">const</span> <span class="kwrd">string</span> cstext1 = </pre>
<pre>                    <span class="str">&quot;ASPWeb.newsGrid.EntityId = {0};ASPWeb.newsGrid.EntityTypeId = 1; ASPWeb.newsGrid.init();&quot;</span>;</pre>
<pre class="alt">                cs.RegisterStartupScript(cstype, csname1, String.Format(cstext1, LabelEntityId.Text), <span class="kwrd">true</span>);</pre>
<pre>            }</pre>
<pre class="alt">        }</pre>
</div>
<p>I found this code on line at this MSDN location.</p>
<p><a title="http://msdn.microsoft.com/en-us/library/z9h4dk8y.aspx" href="http://msdn.microsoft.com/en-us/library/z9h4dk8y.aspx">http://msdn.microsoft.com/en-us/library/z9h4dk8y.aspx</a></p>
<p>Hope this Helps!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2009/05/03/including-javascript-aspnet-pageload-clientscriptmanager/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Speaking Wednesday May 20th, 6:30PM, Microsoft Office San Francisco on ExtJS and ASP.NET Membership!</title>
		<link>http://peterkellner.net/2009/04/20/speaking-aspnet-extjs-microsoft-sanfrancisco-high-perf-javascript/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=speaking-aspnet-extjs-microsoft-sanfrancisco-high-perf-javascript</link>
		<comments>http://peterkellner.net/2009/04/20/speaking-aspnet-extjs-microsoft-sanfrancisco-high-perf-javascript/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 04:59:38 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[ASP.NET 3.5]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Membership]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2009/04/20/speaking-aspnet-extjs-microsoft-sanfrancisco-high-perf-javascript/</guid>
		<description><![CDATA[&#160;
Come hear about how to see ExtJS integrated with ASP.NET for awesome Membership and Profile Management!&#160; I will speaking at the Microsoft Office at a meeting of Bay.Net Users Group.
http://www.baynetug.org/DesktopModules/DetailXEvents.aspx?ItemID=378&#38;mid=49
ASP.NET: Membership with Profile and High Performance ExtJS JavaScript Interface
When:&#160; 
Wednesday, 5/20/2009 at 6:30 PM
Where:&#160; 
Microsoft Office, 835 Market Street, Suite 700, San Francisco
Event Description
In this [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>Come hear about how to see <a href="http://extjs.com/">ExtJS</a> integrated with <a href="http://asp.net">ASP.NET</a> for awesome Membership and Profile Management!&#160; I will speaking at the <a href="http://www.microsoft.com/en/us/default.aspx">Microsoft</a> Office at a meeting of <a href="http://www.baynetug.org/DesktopDefault.aspx">Bay.Net Users Group</a>.</p>
<p><a title="http://www.baynetug.org/DesktopModules/DetailXEvents.aspx?ItemID=378&amp;mid=49" href="http://www.baynetug.org/DesktopModules/DetailXEvents.aspx?ItemID=378&amp;mid=49">http://www.baynetug.org/DesktopModules/DetailXEvents.aspx?ItemID=378&amp;mid=49</a></p>
<p>ASP.NET: Membership with Profile and High Performance <a href="http://extjs.com/">ExtJS</a> JavaScript Interface</p>
<h3>When:&#160; </h3>
<p>Wednesday, 5/20/2009 at 6:30 PM</p>
<h3>Where:&#160; </h3>
<p><strong>Microsoft Office, 835 Market Street, Suite 700, San Francisco</strong></p>
<h3>Event Description</h3>
<p><em>In this session, we will demonstrate building a super rich JavaScript interface to the standard ASP.NET Membership and Profile services. That is, built into ASP.NET are wonderful providers that allow you to validate and store user credentials typically to a database. It also lets you store other information such as pictures, first and last names, as well as anything else you may want to store. In this session we will build a highly performing, 100% JavaScript UI to maintain hundreds of thousands of users. As part of this solution, techniques for using REST based services to access this information will be presented. Once you see this, it will be hard to ever use web forms again.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2009/04/20/speaking-aspnet-extjs-microsoft-sanfrancisco-high-perf-javascript/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced (User agent is rejected)
Database Caching 31/36 queries in 0.007 seconds using disk: basic
Content Delivery Network via Amazon Web Services: S3: PetersBlogCDN.s3.amazonaws.com

Served from: peterkellner.net @ 2012-05-22 10:07:39 -->
