<?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>Marker Studio - Full Service Digital Agency &#187; Development</title>
	<atom:link href="http://www.markerstudio.com/tag/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.markerstudio.com</link>
	<description>Full Service Digital Agency</description>
	<lastBuildDate>Tue, 17 Jan 2012 19:05:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Browser Wars &#8211; Episode II</title>
		<link>http://www.markerstudio.com/technical/2008/09/browser-wars-episode-ii/</link>
		<comments>http://www.markerstudio.com/technical/2008/09/browser-wars-episode-ii/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 21:33:52 +0000</pubDate>
		<dc:creator>Marker</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Events & Presentations]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.markerstudio.com/?p=500</guid>
		<description><![CDATA[It is time for this month&#8217;s Auckland Web Meet Up on Thursday 11th September at 6pm and I&#8217;m really looking forward to it. I have had to miss the last two events, however, this one looks like it will make up for that. A very brave guy from Microsoft&#8217;s Internet Explorer team in Redmond will [...]]]></description>
			<content:encoded><![CDATA[<p>It is time for this month&#8217;s <a href="http://webdesign.meetup.com/108/calendar/8542022/">Auckland Web Meet Up</a> on Thursday 11th September at 6pm and I&#8217;m really looking forward to it. I have had to miss the last two events, however, this one looks like it will make up for that.</p>
<p>A very brave guy from Microsoft&#8217;s Internet Explorer team in Redmond will be presenting the upcoming IE8 browser, followed by Robert O&#8217;Callahan from the Auckland Mozilla team that are working on the next version of Firefox. I&#8217;m impressed that Microsoft are doing this and I hope that the open source guys don&#8217;t give him too much trouble!</p>
<p>The agenda was set before anyone even knew about Google&#8217;s Chrome browser. 2008 is going to be the year of major browser releases and the implications for the web dev community are massive. I highly recommend making the effort to come along to this one.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markerstudio.com/technical/2008/09/browser-wars-episode-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone Web Apps Using InfoConnect</title>
		<link>http://www.markerstudio.com/technical/2008/08/iphone-web-apps-using-infoconnect/</link>
		<comments>http://www.markerstudio.com/technical/2008/08/iphone-web-apps-using-infoconnect/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 06:18:10 +0000</pubDate>
		<dc:creator>Marker</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.markerstudio.com/?p=494</guid>
		<description><![CDATA[I am well overdue to post about about this project we have been working on since the beginning of the year. We were involved in the launch of a site called InfoConnect by NZTA (previously Transit New Zealand). This explains it best: InfoConnect is an initiative to help ensure road users have access to timely [...]]]></description>
			<content:encoded><![CDATA[<p>I am well overdue to post about about this project we have been working on since the beginning of the year. We were involved in the launch of a site called <a href="https://infoconnect.highwayinfo.govt.nz">InfoConnect</a> by <a href="http://www.nzta.govt.nz">NZTA</a> (previously <a href="http://www.transit.govt.nz">Transit New Zealand</a>).</p>
<p>This explains it best:</p>
<blockquote><p>InfoConnect is an initiative to help ensure road users have access to timely and accurate road condition information.</p>
<p>InfoConnect is the destination for developers and companies wanting to access verified Highway Info data programmatically in order to fill a niche market by producing appropriate information channels for the travelling public.</p>
<p>Highway Info includes state highway road and traffic information, webcam coverage in Auckland, Wellington and Christchurch, planned road works, unplanned road closures and delays, maps, and holiday traffic information.</p></blockquote>
<p>Essentially the goal is open up the data available within NZTA to third party developers and get them using it in a way that is going to help us all on the state highways around the country. This issue affect many New Zealanders and even something as simple as being able to check out which route to take home in rush hour is something that would be really helpful to many people. In winter, particularly in the Central North Island and South Island, this information is quite critical. Believe me I know, having driven through a blizzard just last month in Otago!</p>
<p>As part of the project, we have developed a couple of web apps for the iPhone to try and give other developers a taste of what is available and what they can do. We developed two applications:</p>
<h3>iCam.markerstudio.com</h3>
<p>This allows you to browse through the available traffic web cams and view them on your iPhone. These are static images, rather than streaming video, however, they will update automatically every 60 seconds. Handy if you are not sure which route to take to the airport or to go home. Thanks to Justin for helping me with this one and coming up with the way to do the image refresh within the limitations of the iPhone browser.</p>
<h3>iTREIS.markerstudio.com</h3>
<p>TREIS is the system where NZTA record all major road events that affect the national highways. This could include weather related issues such as snow causing a road to be closed, or scheduled events such as road works. They also issue general warnings for both the North and South Island.</p>
<p>As you will only be able to view these on an iPhone I have put together a movie that shows you how they work. If you do have an iPhone, please go to the above URL&#8217;s in Safari.</p>
<p><object width="425" height="344" data="http://www.youtube.com/v/hHmom9OGWoU&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="src" value="http://www.youtube.com/v/hHmom9OGWoU&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<p>I&#8217;m interested in feedback, and am planning for us to build these into one integrated native iPhone application, which would be more powerful, as you could take advantage of the GPS capability. Please post your ideas and comments via this blog if you can? I am particularly interested to know if you think you would pay for this application?</p>
<p>If you are a developer, please check out <a href="https://infoconnect.highwayinfo.govt.nz">InfoConnect</a> and sign up so you can see what is on offer. Neither API is particularly complicated. I wrote the developer documentation, so if you have any questions or feedback on that, please let me know.</p>
<p><!-- technorati tags start --></p>
<p style="text-align:right;font-size:10px;">Technorati Tags: <a rel="tag" href="http://www.technorati.com/tag/api">api</a>, <a rel="tag" href="http://www.technorati.com/tag/infoconnect">infoconnect</a>, <a rel="tag" href="http://www.technorati.com/tag/nzta">nzta</a>, <a rel="tag" href="http://www.technorati.com/tag/transit">transit</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.markerstudio.com/technical/2008/08/iphone-web-apps-using-infoconnect/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MultiFirefox &#8211; Best of both worlds</title>
		<link>http://www.markerstudio.com/uncategorized/2008/06/multifirefox-best-of-both-worlds/</link>
		<comments>http://www.markerstudio.com/uncategorized/2008/06/multifirefox-best-of-both-worlds/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 00:38:36 +0000</pubDate>
		<dc:creator>Marker</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Firefox 3]]></category>
		<category><![CDATA[firefox 3 support]]></category>
		<category><![CDATA[multifirefox]]></category>

		<guid isPermaLink="false">http://blog.markerstudio.com/?p=491</guid>
		<description><![CDATA[If the shinyness and world-record-breaking hype of Firefox 3 had you upgrading last week, you will have noticed a few things. One: FF3 is pretty bad ass. Two: Some of your plug-ins are not going to work in FF3, especially if you use some obscure ones. And then there is the old web development mantra [...]]]></description>
			<content:encoded><![CDATA[<p>If the shinyness and <a href="http://www.spreadfirefox.com/en-US/worldrecord">world-record-breaking</a> hype of Firefox 3 had you upgrading last week, you will have noticed a few things.</p>
<p><strong>One:</strong> FF3 is pretty bad ass.</p>
<p><strong>Two:</strong> Some of your plug-ins are not going to work in FF3, especially if you use some obscure ones. And then there is the old web development mantra of &#8220;But does it work in &lt;insert browser name + version here&gt; ?&#8221;</p>
<p><a href="http://codecontortionist.com/software/mac-osx-software/multifirefox/">MultiFirefox</a> attempts to make the whole process easier, by managing multiple profiles easily and making switching between them simple.</p>
<p><img src="http://www.lifehacker.com/assets/resources/2008/06/multifirefox.png" alt="" /></p>
<p>MultiFirefox is only available for Mac at the moment and is on Donationware, but it looks like it could be very helpful to the web development crowd</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markerstudio.com/uncategorized/2008/06/multifirefox-best-of-both-worlds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.NET Web Developer Jobs at Marker in Auckland &#8211; New Zealand</title>
		<link>http://www.markerstudio.com/uncategorized/2008/05/net-web-developer-jobs-at-marker-in-auckland-new-zealand/</link>
		<comments>http://www.markerstudio.com/uncategorized/2008/05/net-web-developer-jobs-at-marker-in-auckland-new-zealand/#comments</comments>
		<pubDate>Fri, 23 May 2008 05:19:55 +0000</pubDate>
		<dc:creator>Marker</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.markerstudio.com/?p=486</guid>
		<description><![CDATA[We are currently looking for .NET web developers to join the team at our Auckland office. If you are interested or can recommend someone for the following roles, please let us know. We will happily pay $1,000 cash for any successful referrals to both the referrer and the successfully appointed referee. Development Team Leader This [...]]]></description>
			<content:encoded><![CDATA[<p>We are currently looking for .NET web developers to join the team at our Auckland office. If you are interested or can recommend someone for the following roles, please <a href="mailto:careers@markerstudio.com">let us know</a>. We will happily pay $1,000 cash for any successful referrals to both the referrer and the successfully appointed referee.</p>
<h3>Development Team Leader </h3>
<p>This position requires a senior .NET developer with leadership skills and experience to lead a team in the implementation of web solutions for internal and external projects. Marker (www.markerstudio.com) is a leading independently owned New Zealand based full service digital agency, established in 2000. You will be developing projects for many well known companies in New Zealand, Australia and the UK, using the latest technologies available. There is a strong focus on Web 2.0 development with projects frequently integrating with third party API?&#8217;s including Google, Facebook, Flickr, and Salesforce.com.</p>
<p>We are seeking someone with the following skills:</p>
<ul>
<li>Passion for web application development</li>
<li>Experience with ASP.NET/VB.Net/C#/SQL Server 2005</li>
<li>AJAX.NET experience or equivalent such as JQuery or Prototype</li>
<li>Understanding and project experience of working with content management systems</li>
<li>Ability to analyze requirements to carry out database and system design</li>
<li>Problem solving skills</li>
<li>Great communication skills</li>
<li>Ability to supervise a team</li>
<li>3 Years + commercial experience</li>
<li>Self motivated, organized with time management skills</li>
</ul>
<h3>Senior .NET Web Developer</h3>
<p>This position requires a senior .NET web developer to implement web solutions for internal and external projects. Marker (www.markerstudio.com) is a leading independently owned New Zealand based full service digital agency, established in 2000.You will be developing projects for many well known companies in New Zealand, Australia and the UK, using the latest technologies available. There is a strong focus on Web 2.0 development with projects frequently integrating with third party API?&#8217;s including Google, Facebook, Flickr, and Salesforce.com.</p>
<p>We are seeking someone with the following skills:</p>
<ul>
<li>Passion for web application development</li>
<li>Experience with ASP.NET/VB.Net/C#/SQL Server 2005</li>
<li>AJAX.NET experience or equivalent such as JQuery or Prototype</li>
<li>Understanding and project experience of working with content management systems</li>
<li>Ability to analyze requirements to carry out database and system design</li>
<li>Problem solving skills</li>
<li>Great communication skills</li>
<li>Ability to work in a team environment</li>
<li>3 Years + commercial experience</li>
<li>Self motivated, organized with time management skills</li>
</ul>
<hr/>
<p>You will be working in a relaxed environment, which values your input and ideas. We are located in modern character offices just off Ponsonby Road in Auckland.</p>
<p>Apply direct and come in for a chat. If you have any questions about the role, please do not hesitate to call Jon Beattie, Managing Director, on 021 434 133.</p>
<p><a href="mailto:careers@markerstudio.com">careers@markerstudio.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.markerstudio.com/uncategorized/2008/05/net-web-developer-jobs-at-marker-in-auckland-new-zealand/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>freshAIRapps.com</title>
		<link>http://www.markerstudio.com/uncategorized/2008/05/freshairappscom/</link>
		<comments>http://www.markerstudio.com/uncategorized/2008/05/freshairappscom/#comments</comments>
		<pubDate>Wed, 21 May 2008 06:49:28 +0000</pubDate>
		<dc:creator>Marker</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.markerstudio.com/?p=484</guid>
		<description><![CDATA[With the Adobe AIR runtime become more popular for porting web apps to the desktop, freshAIRapps.com have released a great list of some of the best Adobe AIR apps available at the moment. Some of the more noteable ones include the desktop version of Google Analytics Reporting Suite and the desktop version of Google Reader.]]></description>
			<content:encoded><![CDATA[<p>With the <a href="http://en.wikipedia.org/wiki/Adobe_AIR">Adobe AIR</a> runtime become more popular for porting web apps to the desktop, <a href="http://freshairapps.com/">freshAIRapps.com</a> have released a great list of some of the best Adobe AIR apps available at the moment.</p>
<p>Some of the more noteable ones include the desktop version of Google Analytics Reporting Suite and the desktop version of Google Reader.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markerstudio.com/uncategorized/2008/05/freshairappscom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax.Net Update panel, different ways of triggering updates</title>
		<link>http://www.markerstudio.com/uncategorized/2008/03/ajaxnet-update-panel-different-ways-of-triggering-updates/</link>
		<comments>http://www.markerstudio.com/uncategorized/2008/03/ajaxnet-update-panel-different-ways-of-triggering-updates/#comments</comments>
		<pubDate>Sun, 09 Mar 2008 10:44:15 +0000</pubDate>
		<dc:creator>Marker</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.markerstudio.com/archives/450</guid>
		<description><![CDATA[Update panel is probably one of the first thing that you will use once you get your Ajax toolkit with the .net Framework. Other than the basic button in the panel, I&#8217;ve just recently found a few other ways of triggering an refresh in the panel,which wasn&#8217;t obvious to me before. Other than placing an [...]]]></description>
			<content:encoded><![CDATA[<p><span class="mceItemHidden">Update panel is probably one of the first thing that you will use once you get your Ajax toolkit with the .net Framework. Other than the basic button in the panel, I&#8217;ve just recently found a few other ways of triggering an refresh in the panel,which wasn&#8217;t obvious to me before. </span><br />
Other than placing an button in the update panel, there are the 4 ways I&#8217;ve found</p>
<h4><span class="mceItemHidden">1. Using the <span class="mceItemHiddenSpellWord">rendermode</span> attribute of the update panel control.</span></h4>
<p>You can set different values to the <strong><span class="mceItemHidden"><span class="mceItemHiddenSpellWord">rendermode</span> </span></strong>attribute. Setting it to <strong>&#8220;ALWAYS&#8221;</strong><span class="mceItemHidden"> means that if you have any update panel on the page, anything that triggers an update in those other panels will all trigger an update in this panel as well, set the <span class="mceItemHiddenSpellWord">rendermode</span> to </span><strong>&#8220;Conditional&#8221; </strong>means that this update panel is not updated by updates done to other update panels.<br />
Using this method, if there are multiple update panels on the page, and you only want to update one panel not the other ones, then all update panels should be set with the render mode of <strong>&#8220;Conditional&#8221;</strong>. If in another situation, where there are only 2 update panels, and one will set off another one, then <strong>&#8220;Always&#8221;</strong> should be applied.</p>
<p>One good example would be that there is a modal form for adding a new record which is in one update panel, and in another update panel there is a search grid which displays all records, both has the value of <strong>always </strong>set in the <strong><span class="mceItemHidden"><span class="mceItemHiddenSpellWord">rendermode</span></span></strong>. Once a new record is added, because always is set in the <strong><span class="mceItemHidden"><span class="mceItemHiddenSpellWord">rendermode</span> </span></strong>value, this will cause an refresh in the search grid update panel, which updates the grid with the new value. The code behind method can be applied for more than 2 update panels on the page, but only one update panel wants to be refreshed by another update panel&#8217;s update.</p>
<h4>2. Update via an external button not in the update panel</h4>
<p><span class="mceItemHidden">Updates can be done via a button that is not placed in the panel it self, if the update panel needs to be updated via a button outside of the <span class="mceItemHiddenSpellWord">updatepanel</span> for example, this can be done by adding a trigger like so.</span></p>
<blockquote><p><font size="2" color="#0000ff"><font size="2" color="#0000ff"><font size="2" color="#0000ff"><<font size="2" color="#a31515">asp</font><font size="2" color="#0000ff">:</font><font size="2" color="#a31515"><span class="mceItemHidden"><span class="mceItemHiddenSpellWord">LinkButton</span></span></font><font size="2" color="#000000"> </font><font size="2" color="#ff0000">ID</font><font size="2" color="#0000ff"><span class="mceItemHidden">=&#8221;<span class="mceItemHiddenSpellWord">btnGoReceiver</span>&#8220;</span></font><font size="2" color="#000000"> </font><font size="2" color="#ff0000"><span class="mceItemHidden"><span class="mceItemHiddenSpellWord">CssClass</span></span></font><font size="2" color="#0000ff">=&#8221;button green go&#8221;</font><font size="2" color="#000000"> </font><font size="2" color="#ff0000"><span class="mceItemHidden"><span class="mceItemHiddenSpellWord">runat</span></span></font><font size="2" color="#0000ff">=&#8221;server&#8221;</font><font size="2" color="#000000"> </font><font size="2" color="#ff0000"><span class="mceItemHidden"><span class="mceItemHiddenSpellWord">TabIndex</span></span></font><font size="2" color="#0000ff">=&#8221;6&#8243;><</font><font size="2" color="#a31515">span</font><font size="2" color="#0000ff">></font><font size="2" color="#000000">Go</font><font size="2" color="#0000ff"><!--</font--><font size="2" color="#a31515">span</font><font size="2" color="#0000ff">><!--</font--><font size="2" color="#a31515">asp</font><font size="2" color="#0000ff">:</font><font size="2" color="#a31515"><span class="mceItemHidden"><span class="mceItemHiddenSpellWord">LinkButton</span></span></font><font size="2" color="#0000ff">><br />
</font><font size="2" color="#0000ff"><</font><font size="2" color="#a31515">asp</font><font size="2" color="#0000ff">:</font><font size="2" color="#a31515"><span class="mceItemHidden"><span class="mceItemHiddenSpellWord">UpdatePanel</span></span></font><font size="2"> </font><font size="2" color="#ff0000">ID</font><font size="2" color="#0000ff"><span class="mceItemHidden">=&#8221;<span class="mceItemHiddenSpellWord">upReceiverDetails</span>&#8220;</span></font><font size="2"> </font><font size="2" color="#ff0000"><span class="mceItemHidden"><span class="mceItemHiddenSpellWord">runat</span></span></font><font size="2" color="#0000ff">=&#8221;server&#8221;</font><font size="2"> </font><font size="2" color="#0000ff">><br />
</font><font size="2" color="#0000ff"><</font><font size="2" color="#a31515"><span class="mceItemHidden"><span class="mceItemHiddenSpellWord">ContentTemplate</span></span></font><font size="2" color="#0000ff">><br />
</font><<font size="2" color="#a31515">Triggers</font><font size="2" color="#0000ff">><br />
</font><font size="2" color="#0000ff"><</font><font size="2" color="#a31515">asp</font><font size="2" color="#0000ff">:</font><font size="2" color="#a31515"><span class="mceItemHidden">Async<span class="mceItemHiddenSpellWord">PostBackTrigger</span></span></font><font size="2"> </font><font size="2" color="#ff0000"><span class="mceItemHidden"><span class="mceItemHiddenSpellWord">ControlID</span></span></font><font size="2" color="#0000ff"><span class="mceItemHidden">=&#8221;<span class="mceItemHiddenSpellWord">btnGoReceiver</span>&#8220;</span></font><font size="2"> </font><font size="2" color="#0000ff">/><br />
</font><font size="2" color="#0000ff"><!--</font--><font size="2" color="#a31515">Triggers</font><font size="2" color="#0000ff">><br />
</font><font size="2" color="#0000ff"><font size="2" color="#0000ff"><!--</font--><font size="2" color="#a31515">asp</font><font size="2" color="#0000ff">:</font><font size="2" color="#a31515"><span class="mceItemHidden"><span class="mceItemHiddenSpellWord">UpdatePanel</span></span></font><font size="2" color="#0000ff">></font></font></font></font></font></font></font></font></font></p>
</blockquote>
<p>The above <strong><span class="mceItemHidden">Async<span class="mceItemHiddenSpellWord">PostBackTrigger</span> </span></strong><span class="mceItemHidden">contains the id of an button outside of the update panel, when this particular button is clicked on, the update panel is refreshed without <span class="mceItemHiddenSpellWord">postback</span>,hence the </span><strong>AsyncPostbackTrigger</strong>. You can also add a different tag of <strong><span class="mceItemHidden">&#8220;<span class="mceItemHiddenSpellWord">PostBackTrigger</span>&#8221; </span></strong>which will trigger an update to the update panel but causing a page refresh.</p>
<h4><span class="mceItemHidden">3.Update <span class="mceItemHiddenSpellWord">programmatically</span> via code behind</span></h4>
<p><span class="mceItemHidden">An update can be done to the <span class="mceItemHiddenSpellWord">updatepanel</span> via code, This can be done by referring to the update panel object and then calling the .Update function of the update panel object.</span></p>
<blockquote><p><span class="mceItemHidden">in <span class="mceItemHiddenSpellWord">aspx</span></span><br />
<span class="mceItemHidden"> ..asp:<span class="mceItemHiddenSpellWord">updatepanel</span> id=&#8221;up1 ..</span></p>
<p>in code behind<br />
&#8230;&#8230;<br />
up1.update()<br />
&#8230;&#8230;</p>
</blockquote>
<p>There are quite a few good situations where this can be used.</p>
<p><span class="mceItemHidden">In one example, there is a grid display a list of vehicles, on the right side of the grid, we want to display the details of the vehicle when a person clicks an item in the grid, but we want to do this so the page does not refresh. The grid it self is placed in one update panel, on every row in the grid, a <span class="mceItemHiddenSpellWord">linkbutton</span> with text of view details and command </span><strong>&#8220;view_details&#8221; </strong><span class="mceItemHidden">is displayed. On the right hand side, the fields displaying the details are in a separate update panel. Because the <span class="mceItemHiddenSpellWord">linkbuttons</span> are rendered dynamically, we can not add all <span class="mceItemHiddenSpellWord">linkbutton</span> ids to the details update panel as triggers, and it would be too inefficient. So this is the perfect example to execute the update in the code behind. So in the row command function of the grid, when ever the </span><strong>view_details</strong><span class="mceItemHidden"> command is executed, the fields in the details panel are set with the vehicles values, and the details update panels update function is called. The update function basically tells the update panel to re-render the <span class="mceItemHiddenSpellWord">html</span>.</span></p>
<p><span class="mceItemHidden">Another situation is with the <span class="mceItemHiddenSpellWord">Masterpage</span> structure in .Net, if you have one button in one content template wanting to update another update panel in another content template, this can not happen. The problem that is faced here is the control id in one content template is not recognised in another content template, so the only way to trigger this update is via code behind.</span></p>
<h4><span class="mceItemHidden">4. Update the update panel via <span class="mceItemHiddenSpellWord">javascript</span></span></h4>
<p><span class="mceItemHidden">You can trigger an update to the panel via some tricky <span class="mceItemHiddenSpellWord">javascript</span> function call. First lets have a look how <span class="mceItemHiddenSpellWord">linkbutton</span> works. If you had a <span class="mceItemHiddenSpellWord">linkbutton</span> and looked at the generated <span class="mceItemHiddenSpellWord">html</span>, on the <span class="mceItemHiddenSpellWord">onclick</span> function you will notice a line of code <span class="mceItemHiddenSpellWord">simlar</span> to this</span></p>
<blockquote>
<pre id="line287"><<span class="start-tag">a</span><span class="attribute-name"> id</span>=<span class="attribute-value"><span class="mceItemHidden">"ctl00_<span class="mceItemHiddenSpellWord">btnSubmit</span>" </span></span><span class="attribute-name">class</span>=<span class="attribute-value"><span class="mceItemHidden">"<span class="mceItemHiddenSpellWord">textLeft</span>" </span></span></pre>
<pre id="line287"><span class="attribute-value"><span class="mceItemHidden" /></span><span class="attribute-name"><span class="mceItemHidden"><span class="mceItemHiddenSpellWord">href</span></span></span>=<span class="attribute-value"><span class="mceItemHidden">"<span class="mceItemHiddenSpellWord">javascript</span>:__<span class="mceItemHiddenSpellWord">doPostBack</span>('ctl00$btnSubmit','')"</span></span>>Submit..</pre>
</blockquote>
<p><span class="mceItemHidden">The <span class="mceItemHiddenSpellWord">href</span> value is in fact just a <span class="mceItemHiddenSpellWord">javascript</span> <span class="mceItemHiddenSpellWord">postback</span>, so basically the <span class="mceItemHiddenSpellWord">postback</span> of a link button is triggered via <span class="mceItemHiddenSpellWord">javascript</span>. Understanding this concept, basically what it means is we could have a hidden button placed in the update panel that is not visible, and use the <span class="mceItemHiddenSpellWord">javascript</span> line of </span><strong><span class="mceItemHidden">__<span class="mceItemHiddenSpellWord">doPostBack</span>(&#8216;ct100$ButtonID&#8217;,&#8221;), </span></strong><span class="mceItemHidden">this will be like clicking the button, and hence refreshing the update panel. </span></p>
<p><span class="mceItemHidden">The situation on where this would be used is when there are interaction between a parent and child page. For example, the parent page contains a button of adding a new vehicle listing, clicking on the button opens a new page, once the new vehicle listing is added on the child page, the parent pages list grid is refreshed. Since the child page has no access to objects of the parent page in the code behind, we can not update the panel programmatic. To update the parent page, it can be done via <span class="mceItemHiddenSpellWord">javascript</span> by creating a <span class="mceItemHiddenSpellWord">javascript</span> function on the parent page, which executes the </span><strong><span class="mceItemHidden"><span class="mceItemHiddenSpellWord">doPostBack</span> </span></strong><span class="mceItemHidden">of an hidden button in the update panel, on the child page, once the child page closes, a <span class="mceItemHiddenSpellWord">javascript</span> call to the function on the parent page is called, this can be done by using the <span class="mceItemHiddenSpellWord">javascript</span> </span><strong><span class="mceItemHidden">parent.<span class="mceItemHiddenSpellWord">functionname</span></span></strong>.
</p>
<p><!--c5a1183ae44158162a224ea11884928f-->
</p>
<p><!--06f620d69523cdbccac8b3a190752ff9-->
</p>
<p><!--838aaa19787a3cd7db644a3f131c5381--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.markerstudio.com/uncategorized/2008/03/ajaxnet-update-panel-different-ways-of-triggering-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax.net autocomplete, passing selected value ID to code behind</title>
		<link>http://www.markerstudio.com/uncategorized/2008/03/ajaxnet-autocomplete-passing-selected-value-id-to-code-behind/</link>
		<comments>http://www.markerstudio.com/uncategorized/2008/03/ajaxnet-autocomplete-passing-selected-value-id-to-code-behind/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 20:23:33 +0000</pubDate>
		<dc:creator>Marker</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://blog.markerstudio.com/archives/442</guid>
		<description><![CDATA[With the more work I am doing on the Ajax.Net frame work, the better I am thinking of, but what I found is that sometimes even though the functionalities are all there, they seem to be hidden and you have to really dig deep to find out how to get it working. Just recently, I [...]]]></description>
			<content:encoded><![CDATA[<p>With the more work I am doing on the Ajax.Net frame work, the better I am thinking of, but what I found is that sometimes even though the functionalities are all there, they seem to be hidden and you have to really dig deep to find out how to get it working.</p>
<p>Just recently, I have done a autocomplete using the toolkit&#8217;s autocomplete. What I wanted to do is using the autocomplete, search a receiver table, once a user selected a particular item in the autocomplete, the ReceiverID of the particular item is then somehow passed through to the code behind, and this ReceiverID is then used to display the receiver details in a panel below the autocomplete.</p>
<p>This was tricking as it involved both client side Javascript functions and code behind, but this was how I ended up doing it. First setup a normal ajax toolkit autocomplete, there is plenty of documentation out in the web world for this so I won&#8217;t go through in detail. In the webservice function where the data is retieved from the database, and added to a string array, the following will need to be used</p>
<blockquote><p>Dim dr As System.Data.SqlClient.SqlDataReader<br />
dr = dsReceverMgt.selectAllReceiverMnagement(prefixText)</p>
<p>While dr.Read<br />
sQuickName = dr(&#8220;ReceiverQuickName&#8221;)<br />
sCompany = dr(&#8220;ReceiverCompany&#8221;)<br />
sLocationName = dr(&#8220;ReceiverAddressTown&#8221;)<br />
Co = sQuickName &#038; &#8220;,&#8221; &#038; sCompany &#038; &#8220;,&#8221; &#038; dr(&#8220;ReceiverAddress1&#8243;) &#038; &#8220;,&#8221; &#038; sLocationName<br />
If sQuickName.StartsWith(prefixText, StringComparison.OrdinalIgnoreCase) Or sCompany.StartsWith(prefixText, StringComparison.OrdinalIgnoreCase) Or sLocationName.StartsWith(prefixText, StringComparison.OrdinalIgnoreCase) Then<br />
&#8216;&#8212;add the member name to the list if the text starts with the variables&#8212;<br />
listOfMembersStartsWith.Add(<strong>AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem</strong>(Co, dr(&#8220;ReceiverPK&#8221;)))<br />
Else<br />
&#8216;&#8212;add the member name to the list if the text contains the keyword but not as an prefix&#8212;<br />
listOfMembersNotStartsWith.Add(<strong>AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem</strong>(Co, dr(&#8220;ReceiverPK&#8221;)))<br />
End If<br />
End While</p>
</blockquote>
<p>using this function <em>AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem</em><strong>, </strong>the items is inserted with a value/text combination.</p>
<p>In the autocomplete declaration it self on the aspx code, this attribute need to be placed on the autocomplete <em>OnClientItemSelected=&#8221;SetSelectedValue&#8221; , </em>what this will trigger is on an selection in autocomplete, it will call a javascript function called SetSelectedValue, and here is the javascript declaration</p>
<blockquote><p>function SetSelectedValue( source, eventArgs ) {<br />
document.getElementById((&#8216;ctl00_leftContent_SelectedReceiver&#8217;)).value=eventArgs.get_value();<br />
}</p>
</blockquote>
<p>What I have created on the page is a hidden input, so on fireing of the event by the autocomplete when an item is selected, it will set the hidden inputs value with the eventArgs.get_value(), which in my case is the primary key for the Receiver row</p>
<blockquote><input type="hidden" id="SelectedReceiver" />
</blockquote>
<p>once this is done, the selected pk is available.</p>
<p>The receiver details is displayed once a person clicks on a Go button, so in my Go button&#8217;s onclick event function, I have the following code, which then goes and retrievs the receiver details</p>
<p>Protected Sub btnGoReceiver_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGoReceiver.Click<br />
DisplayReceiverDetails(SelectedReceiver.Value)<br />
End Sub</p>
<p>This can be easily modified to retrieve the details on an autocomplete selection by adding a line to the SetSelectedValue function, which clicks the go button via javascript to trigger the action
</p>
<p><!--3dd2004f8c8cf791f186d6683931b630--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.markerstudio.com/uncategorized/2008/03/ajaxnet-autocomplete-passing-selected-value-id-to-code-behind/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IE8-standards compliant</title>
		<link>http://www.markerstudio.com/uncategorized/2008/03/ie8-standards-compliant/</link>
		<comments>http://www.markerstudio.com/uncategorized/2008/03/ie8-standards-compliant/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 21:50:21 +0000</pubDate>
		<dc:creator>Marker</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.markerstudio.com/archives/438</guid>
		<description><![CDATA[All to often I&#8217;ve hear the development team saying &#8216;it&#8217;s an IE6 specific problem&#8217; or an IE7 issue, so it was interesting to read on Microsoft?&#8217;s MSDN IEBlog that IE8 &#8220;will, by default, interpret web content in the most standards compliant way it can&#8221; Previously Microsoft had said otherwise so good to note they are [...]]]></description>
			<content:encoded><![CDATA[<p>All to often I&#8217;ve hear the development team saying &#8216;it&#8217;s an IE6 specific problem&#8217; or an IE7 issue, so it was interesting to read on Microsoft?&#8217;s MSDN <a target="_blank" href="http://blogs.msdn.com/ie/archive/2008/03/03/microsoft-s-interoperability-principles-and-ie8.aspx">IEBlog</a> that IE8 &#8220;will, by default, interpret web content in the most standards compliant way it can&#8221; Previously Microsoft had said otherwise so good to note they are obviously &#8216;listening&#8217; to feedback and making amends for IE8.<br />
Browser specific issues and fixes are hugely time consuming and draw a lot of resource effort in all web projects and something I hope we can look to reduce in the future.</p>
<p>So it will be interesting to see the effect IE8 has on our online development projects and compatibility issues and of course the sanity of our developers (and me!)&#8230;..maybe a bit too early to trust the mighty Microsoft on this one..time will tell.
</p>
<p><!--69331873bcf557352c9e542eaa3141f7--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.markerstudio.com/uncategorized/2008/03/ie8-standards-compliant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Animated PNG will be available in Firefox 3</title>
		<link>http://www.markerstudio.com/uncategorized/2008/01/animated-png-will-be-available-in-firefox-3/</link>
		<comments>http://www.markerstudio.com/uncategorized/2008/01/animated-png-will-be-available-in-firefox-3/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 21:04:32 +0000</pubDate>
		<dc:creator>Marker</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[User Centric Design]]></category>

		<guid isPermaLink="false">http://blog.markerstudio.com/archives/422</guid>
		<description><![CDATA[I previously posted about the new features to be supported in Firefox 3 from a session I attended with Robert O&#8217;Callahan from Mozilla. One of these was support for APNG or Animated PNG graphics. This provides an option for animation on a web page beyond Flash or animated GIFs. This is good news for web [...]]]></description>
			<content:encoded><![CDATA[<p>I <a href="http://blog.markerstudio.com/archives/409">previously posted</a> about the new features to be supported in Firefox 3 from a session I attended with Robert O&#8217;Callahan from Mozilla. One of these was support for APNG or Animated PNG graphics. </p>
<p>This provides an option for animation on a web page beyond Flash or animated GIFs. This is good news for web designers because:</p>
<ul>
<li>PNG&#8217;s have a full alpha channel<br />
TRANSLATION: They can have a transparent background so you can overlay them on other elements in the page.
</li>
<li>PNG&#8217;s support a maximum of 16 million colours<br />
TRANSLATION: We can finally have photo quality animated images on a web page. GIF&#8217;s only support 256 colour which is too limited for most photos.
</li>
<li>PNG&#8217;s have better lossless compression<br />
TRANSLATION: The file size is smaller without reducing the quality of the image, which means the image will load faster. </li>
</ul>
<p>The downside is that this is only going to be supported by Firefox 3, which means having to do a browser detect and deliver an animated GIF to other browser. My understanding though, is that the Animated PNG will just show the first frame if it is not a supported browser, which means you could allow for this in the design and the worse case scenario is the user only gets a static image. </p>
<p>If you are ready to get going you&#8217;ll need:</p>
<ul>
<li><a href="http://animatedpng.com/index.php/assembler/">The online APNG Assember</a></li>
<li><a href="http://www.mozilla.com/en-US/firefox/all-beta.html">The Firefox 3 Beta</a></li>
<li><a href="http://animatedpng.com/index.php/resources/">These useful resources</a></li>
</ul>
<p><!--d0fcd4157ab134721dc5bc9804aaabdf--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.markerstudio.com/uncategorized/2008/01/animated-png-will-be-available-in-firefox-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Chart API Review</title>
		<link>http://www.markerstudio.com/uncategorized/2008/01/google-chart-api-review/</link>
		<comments>http://www.markerstudio.com/uncategorized/2008/01/google-chart-api-review/#comments</comments>
		<pubDate>Thu, 03 Jan 2008 02:35:57 +0000</pubDate>
		<dc:creator>Marker</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.markerstudio.com/archives/412</guid>
		<description><![CDATA[Turning data into pretty charts and graphs has never been an easy task for web developers. For some reason, this has never been a standard part of any of the major web frameworks. We have always had to buy third party software or more recently leverage a reporting system like Crystal or Microsoft Reporting Services. [...]]]></description>
			<content:encoded><![CDATA[<p>Turning data into pretty charts and graphs has never been an easy task for web developers. For some reason, this has never been a standard part of any of the major web frameworks. We have always had to buy third party software or more recently leverage a reporting system like Crystal or Microsoft Reporting Services. </p>
<p>Google has recently launched another free API (<a href="http://en.wikipedia.org/wiki/API">Application Programming Interface</a>) called <a href="http://code.google.com/apis/chart/">Google Chart</a>. </p>
<p>The following types of charts are available: </p>
<ul>
<li><a href="http://code.google.com/apis/chart/#line_charts">Line chart</a></li>
<li><a href="http://code.google.com/apis/chart/#bar_charts">Bar chart</a></li>
<li><a href="http://code.google.com/apis/chart/#pie_charts">Pie chart</a></li>
<li><a href="http://code.google.com/apis/chart/#venn">Venn diagram</a></li>
<li><a href="http://code.google.com/apis/chart/#scatter_plot">Scatter plot</a></li>
</ul>
<p>What makes Google Chart so notably is that it is very, very easy to implement. All you need to do is pass a URL to their servers and it will return you a <a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics">PNG</a> image.  </p>
<p>Take a look at this sample 3D pie chart I have created:</p>
<p><img src="http://chart.apis.google.com/chart?cht=p3&#038;chd=s:ZB&#038;chs=480x200&#038;chl=Yes|No&#038;chtt=Is%20Google%20Charts%20The%20Easiest%20Charting%20Solution?"alt="Sample 3D Pie chart" /></p>
<p>In code this looks like just an HTML image tag, no web service calls, nothing tricky whatsoever:</p>
<pre>
&lt;img src="

http://chart.apis.google.com/chart?

cht=p3
&#038;chd=s:ZB
&#038;chs=480x200
&#038;chl=Yes|No
&#038;chtt=Is Google Charts The Easiest Charting Solution?"
alt="Sample 3D Pie chart" /&gt;
</pre>
<p>Let&#8217;s break this down to explain the URL format in more detail:</p>
<pre>
&lt;img src="

http://chart.apis.google.com/chart?

<strong>URL to the Google Chart server</strong>

cht=p3
<strong>Type of chart, in this case 3D Pie</strong>

&#038;chd=s:ZB
<strong>Type of data. I've used <a href="http://code.google.com/apis/chart/#simple">Simple Encoding</a>
where Z = 25 and B = 1 which is suitable for simple charts.
<a href="http://code.google.com/apis/chart/#text">Text</a> and <a href="http://code.google.com/apis/chart/#extended">Extended</a> encoding are also available.
</strong>

&#038;chs=480x200
<strong>Size of the chart in pixels.
In this case 480 pixels wide by 200 pixels high</strong>

&#038;chl=Yes|No
<strong>Labels separated by the pipe character |</strong>

&#038;chtt=Is Google Charts The Easiest Charting Solution?
<strong>Optional chart title</strong>

"alt="Sample 3D Pie chart" /&gt;
</pre>
<p>This is a very simple example, but this does scale to quite complex charts with larger data sets, and you have the ability to customise the colours. It wouldn&#8217;t be that difficult to turn this into a server side .NET control that would allow you to just pass the variables to a function and let it render the correct URL for your requirements. </p>
<p>The ease of use and the fact that it is free must make this a viable option for all but the most complex charting and graphing requirements. </p>
<p><!-- technorati tags start --></p>
<div class="postMetaData" id="technoratiTags">
<p><strong>Technorati Tags:</strong> <a href="http://www.technorati.com/tag/google" rel="tag">google</a>, <a href="http://www.technorati.com/tag/googlechart" rel="tag">googlechart</a>, <a href="http://www.technorati.com/tag/webdev" rel="tag">webdev</a></p>
</div>
<p><!-- technorati tags end -->
</p>
<p><!--427a3ebb2d6c4589f4040bd948fed887--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.markerstudio.com/uncategorized/2008/01/google-chart-api-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

