<?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>DataBatrix &#187; AJAX</title>
	<atom:link href="http://www.databatrix.com/category/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.databatrix.com</link>
	<description>The workings of Eric Bridges</description>
	<lastBuildDate>Thu, 01 Dec 2011 23:47:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>Automatically Add RequiredFieldValidator to TextBox Controls</title>
		<link>http://www.databatrix.com/2010/11/automatically-add-requiredfieldvalidator-to-textbox-controls/</link>
		<comments>http://www.databatrix.com/2010/11/automatically-add-requiredfieldvalidator-to-textbox-controls/#comments</comments>
		<pubDate>Sat, 13 Nov 2010 14:56:55 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[.NET 2.0]]></category>
		<category><![CDATA[.NET 3.5]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[RequiredFieldValidator]]></category>
		<category><![CDATA[ValidatorCalloutExtender]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/?p=274</guid>
		<description><![CDATA[If you are like me, you hate having to create the required field validators for a bunch of TextBox controls.  Even more if you are adding Ajax ValidatorCallout controls to all of them.  Sure, you could create another server control to extent the Textbox to automatically include this&#8230;but here is a simple alternative. I created [...]]]></description>
			<content:encoded><![CDATA[<p>If you are like me, you hate having to create the required field validators for a bunch of TextBox controls.  Even more if you are adding Ajax ValidatorCallout controls to all of them.  Sure, you could create another server control to extent the Textbox to automatically include this&#8230;but here is a simple alternative.</p>
<p>I created a method that cycles through all of the controls and checks to see if it has the attribute &#8220;Required&#8221;, and if so, then add the RequiredFieldValidator and Ajax callout controls automatically. You could obviously expand on this to meet your specific needs.<br />
Here is how you would markup your TextBox control:<br />
&lt;asp:TextBox Required=&#8221;true&#8221; ValidationGroup=&#8221;valGroup&#8221; ID=&#8221;TextBox1&#8243; runat=&#8221;server&#8221; /&gt;<br />
<br />
Here is the method in the code behind:</p>
<pre class="brush:csharp">private void AddRequiredValidations(ControlCollection controls)
{
    List requiredValidators = new List();
    for (int i = 0; i &lt; controls.Count; i++)
    {
        if (controls[i] is TextBox)
        {
            TextBox tb = (TextBox)controls[i];
            if (tb.Attributes["Required"] != null &amp;&amp; Convert.ToBoolean(tb.Attributes["Required"]))
            {
                RequiredFieldValidator requiredValidator = new RequiredFieldValidator();
                requiredValidator.ErrorMessage = "Required";
                requiredValidator.ID = "required" + tb.ID;
                requiredValidator.Display = ValidatorDisplay.None;
                requiredValidator.ValidationGroup = tb.ValidationGroup;
                requiredValidator.ControlToValidate = tb.ID;
                // Add the RequiredFieldValidator to a list to be added later
                // Since we can't add them to the control as we are cycling through them
                requiredValidators.Add(requiredValidator); 

                tb.CausesValidation = true;
            }
        }

        if (controls[i].HasControls()) // If this control has child controls
        {
            AddRequiredValidations(controls[i].Controls); // Search the child controls too
        }
    }

    // Now we can actually add the RequiredFieldValidators since we are done cycling through the existing controls
    for (int i = 0; i &lt; requiredValidators.Count; i++)
    {

        AjaxControlToolkit.ValidatorCalloutExtender callout = new AjaxControlToolkit.ValidatorCalloutExtender();
        callout.TargetControlID = requiredValidators[i].ID;
        callout.ID = requiredValidators[i].ID + "Callout";
        controls.Add(requiredValidators[i]);
        controls.Add(callout);
    }
}</pre>
<p>Then all you have to do is call it in your Page_Load() method:</p>
<pre class="brush:csharp">AddRequiredValidations(this.Controls);</pre>
<p>
This will work not only for a singe TextBox control, but also for TextBox controls buried inside a GridView or Repeater!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2010/11/automatically-add-requiredfieldvalidator-to-textbox-controls/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ListSearchExtender not finding some numeric values</title>
		<link>http://www.databatrix.com/2010/11/listsearchextender-not-finding-some-numeric-values/</link>
		<comments>http://www.databatrix.com/2010/11/listsearchextender-not-finding-some-numeric-values/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 17:20:26 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[.NET 2.0]]></category>
		<category><![CDATA[.NET 3.5]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[IsSorted]]></category>
		<category><![CDATA[ListSearchExtender]]></category>
		<category><![CDATA[numeric]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/?p=265</guid>
		<description><![CDATA[I was working on a project when I noticed something strange with my ListSearchExtender.  This was happening on 2 different controls.  One ListSearchExtender was extending a ListBox and another was on a DropDown.  Both of these controls were populated with mostly numeric values (ID numbers) sorted in order ascending order.  The DropDown box was populated [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">I was working on a project when I noticed something strange with my ListSearchExtender.  This was happening on 2 different controls.  One ListSearchExtender was extending a ListBox and another was on a DropDown.  Both of these controls were populated with mostly numeric values (ID numbers) sorted in order ascending order.  The DropDown box was populated with about 1200 ID numbers while the ListBox was populated with about 600 ID numbers along with a small description of each item.  I was using the ListSearchExtender so that the user could easily jump to a specific item if they already knew the ID number.  The proplem I was having was that the ListSearchExtender did not find and jump to certain ID numbers even though they were in the list.  Particularly this seem to happen when the ID number started with the number one (1).  For example, let&#8217;s say the ListBox/DropDown contained these values:</div>
<div id="_mcePaste">23</div>
<div id="_mcePaste">45</div>
<div id="_mcePaste">89</div>
<div id="_mcePaste">101</div>
<div id="_mcePaste">109</div>
<div id="_mcePaste">111</div>
<div id="_mcePaste">140</div>
<div id="_mcePaste">204</div>
<div id="_mcePaste">226</div>
<div id="_mcePaste">1005</div>
<div id="_mcePaste">Using the ListSearchExtender extender, I would not find 101 or 109.  Below is the markup for the ListSearchExtender:</div>
<pre class="brush:html">&lt;ajax:ListSearchExtender ID="lseAjaxDdlFilter" runat="server" TargetControlID="ddlFilter" IsSorted="true" PromptPosition="Top" /&gt;</pre>
<div id="_mcePaste">I discovered that the root of my problem was <strong>IsSorted=&#8221;true&#8221;</strong>.  Since my data was already sorted I had set this value to true to increase the performance.  I am guessing the ListSearchExtender IsSorted property is assuming the sort is by text/string instead of treating them as integers.  The same list above sorted as text would be in this order: 1005, 101, 109, 111, 140, 204, 226, 23, 45, 89.  This would throw off the functionality.  So I set <strong>IsSorted=&#8221;false&#8221;</strong> and everything works as it should!</div>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2010/11/listsearchextender-not-finding-some-numeric-values/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IE: scrollTop Not Working As Expected</title>
		<link>http://www.databatrix.com/2010/08/ie-scrolltop-not-working-as-expected/</link>
		<comments>http://www.databatrix.com/2010/08/ie-scrolltop-not-working-as-expected/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 02:04:10 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[.NET 2.0]]></category>
		<category><![CDATA[.NET 3.5]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[div]]></category>
		<category><![CDATA[overflow]]></category>
		<category><![CDATA[scrollTop]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/?p=254</guid>
		<description><![CDATA[I banged my head on this one for a couple of days.  Still got a defect out of the deal, but finally got it working.  I had an ajax tabcontainer with several tabs.  In some of these tabs was GridView.  I had overflow set on a DIV that the GridView was placed in so that [...]]]></description>
			<content:encoded><![CDATA[<p>I banged my head on this one for a couple of days.  Still got a defect out of the deal, but finally got it working.  I had an ajax tabcontainer with several tabs.  In some of these tabs was GridView.  I had overflow set on a DIV that the GridView was placed in so that I would get vertical scrollbars within the page.  The issue was that I needed to keep the position of the DIV scroll on a postback.  Should not have been an issue since I have the exact same scenario on another page within the same website which work perfectly.  But for some reason, using the same code, it would not work on this particular page.  Both pages use MasterPages, tabcontainers, and a little javascript and cookies to save the scroll position.</p>
<p>When debugging the issue, I would find that it would save and get the correct scroll position from the cookie; however, when setting the scrollTop:</p>
<pre class="brush:javascript">document.getElementById('myDiv').scrollTop = scrollPosition;</pre>
<p>It would not set.  The DIV&#8217;s scrollTop would be 0 before and after the statement above even after verifying that scrollPosition had an actual value!</p>
<p>I will also mention that the grid did have a decent about of data.  Actually, enough to make the page size about 3.5 MBs by the time HTML was rendered&#8230;almost 1 MB taken up by ViewState alone!  Because of AJAX and the amount of data in the grid, there was a noticeable amount of lag when using the page&#8230;not a lot, but noticeable.</p>
<p>Work Around:</p>
<p>I started to wonder if the above javascript (which ran on window.onload) may be running too quickly&#8230;or rather, ran before IE could finish with the rest of the AJAX/javascript code on the page.  So I tried this line instead of the one above:</p>
<pre class="brush:javascript">setTimeout(function() { document.getElementById('myDiv').scrollTop = scrollPosition; }, 250);</pre>
<p>So basically, I wanted to wait 250 milliseconds before setting the scrollTop.  Much to my surprise, this worked!  By this point I was too exhausted to keep knocking down the delay to see how low it could go and still work.  I couldn&#8217;t really notice the 250 delay in setting the scroll position, so that is where I ended.</p>
<p>Your mileage may vary, but in case you have a similar issue&#8230;try a small delay when setting the scrollTop before attempting to re-engineer the whole page.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2010/08/ie-scrolltop-not-working-as-expected/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JobTime: Time Clock Web Application And Job Cost Tracking</title>
		<link>http://www.databatrix.com/2009/09/jobtime-time-clock-web-application-and-job-cost-tracking/</link>
		<comments>http://www.databatrix.com/2009/09/jobtime-time-clock-web-application-and-job-cost-tracking/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 13:18:06 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[.NET 2.0]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[Payroll]]></category>
		<category><![CDATA[Timeclock]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/?p=214</guid>
		<description><![CDATA[Background The company needed to track time logged to particular jobs/projects.  The initial idea was to use a site like ClickTime.  However, for an employee to log time against a job, you would need to tell ClickTime all of your jobs (which would be tedious) or configure an integration app to automatically populate the available [...]]]></description>
			<content:encoded><![CDATA[<h3>Background</h3>
<p>The company needed to track time logged to particular jobs/projects.  The initial idea was to use a site like <a href="http://www.clicktime.com/" target="_blank">ClickTime</a>.  However, for an employee to log time against a job, you would need to tell ClickTime all of your jobs (which would be tedious) or configure an integration app to automatically populate the available jobs/projects.</p>
<h3>Solution</h3>
<p>I created a web application that would allow employees to log time against jobs/projects.  It would search instantly against their project management software for a list of available jobs.  The type of work was categorized for reporting.  Since we would have the employee&#8217;s hours, it would be used for payroll.  I implemented an export feature for preparing the payroll information for ADP and EDH.  Work time for each project was then entered into the project management software to be calculated as job cost.  As a bonus, you could use the gathered data to calculate each employees &#8220;utilization&#8221;.</p>
<table border="0">
<tbody>
<tr>
<td>
<p><div id="attachment_217" class="wp-caption alignnone" style="width: 160px"><a href="http://www.databatrix.com/wp-content/uploads/2009/09/MainScreen.JPG"><img class="size-thumbnail wp-image-217" title="MainScreen" src="http://www.databatrix.com/wp-content/uploads/2009/09/MainScreen-150x150.jpg" alt="Landing page." width="150" height="150" /></a><p class="wp-caption-text">Landing page.</p></div></td>
<td>
<p><div id="attachment_216" class="wp-caption alignnone" style="width: 160px"><a href="http://www.databatrix.com/wp-content/uploads/2009/09/EnterTime.JPG"><img class="size-thumbnail wp-image-216" title="EnterTime" src="http://www.databatrix.com/wp-content/uploads/2009/09/EnterTime-150x150.jpg" alt="Enter time for a particular project/job." width="150" height="150" /></a><p class="wp-caption-text">Enter time for a particular project/job.</p></div></td>
</tr>
<tr>
<td>
<p><div id="attachment_215" class="wp-caption alignnone" style="width: 160px"><a href="http://www.databatrix.com/wp-content/uploads/2009/09/ApplyJobCost.JPG"><img class="size-thumbnail wp-image-215" title="ApplyJobCost" src="http://www.databatrix.com/wp-content/uploads/2009/09/ApplyJobCost-150x150.jpg" alt="Apply costs to each job." width="150" height="150" /></a><p class="wp-caption-text">Apply costs to each job.</p></div></td>
<td>
<p><div id="attachment_218" class="wp-caption alignnone" style="width: 160px"><a href="http://www.databatrix.com/wp-content/uploads/2009/09/PayRoll.JPG"><img class="size-thumbnail wp-image-218" title="PayRoll" src="http://www.databatrix.com/wp-content/uploads/2009/09/PayRoll-150x150.jpg" alt="Payroll export options." width="150" height="150" /></a><p class="wp-caption-text">Payroll export options.</p></div></td>
</tr>
<tr>
<td>
<p><div id="attachment_219" class="wp-caption alignnone" style="width: 160px"><a href="http://www.databatrix.com/wp-content/uploads/2009/09/Utilization.JPG"><img class="size-thumbnail wp-image-219" title="Utilization" src="http://www.databatrix.com/wp-content/uploads/2009/09/Utilization-150x150.jpg" alt="Utilization" width="150" height="150" /></a><p class="wp-caption-text">Utilization</p></div></td>
<td> </td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2009/09/jobtime-time-clock-web-application-and-job-cost-tracking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation Schedule 2.0</title>
		<link>http://www.databatrix.com/2009/08/installation-schedule-2-0/</link>
		<comments>http://www.databatrix.com/2009/08/installation-schedule-2-0/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 00:41:09 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[Web Applications]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/2009/08/installation-schedule-2-0/</guid>
		<description><![CDATA[Background: This project had a similar background to the Install Schedule application.&#160; We started using a software package called eManage (I worked for this company later and built a mobile web application to interface with their database) to manage several areas of our business.&#160; The software has a built in calendar that can be used [...]]]></description>
			<content:encoded><![CDATA[<h3>Background:</h3>
<p>This project had a similar background to the <a href="http://www.databatrix.com/2009/08/installation-schedule/">Install Schedule application</a>.&#160; We started using a software package called <a href="http://www.google.com/search?hl=en&amp;sa=X&amp;oi=spell&amp;resnum=0&amp;ct=result&amp;cd=1&amp;q=Marketplace+software+e+manage&amp;spell=1">eManage</a> (I worked for this company later and built a mobile web application to interface with their database) to manage several areas of our business.&#160; The software has a built in calendar that can be used for scheduling installations.&#160; The look and feel of the calendar is very similar to the Microsoft Outlook calendar.</p>
<h3>Problem:</h3>
<p>Our employees were accustom to the layout of the <a href="http://www.databatrix.com/2009/08/installation-schedule/">Install Schedule application</a>.&#160; They liked each installer to have its own line, doing it that way also makes it easier to manage employee&#8217;s time too!&#160; It was not possible to change eManage to show the calendar this way.</p>
<table border="0" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td valign="top" width="200">
<p align="center"><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Install_Calendar12.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Install_Calendar1" border="0" alt="Install_Calendar1" src="http://www.databatrix.com/wp-content/uploads/2009/08/Install_Calendar1_thumb1.png" width="260" height="169" /></a>            <br />Each employee has a line </p>
</td>
<td valign="top" width="200">
<p align="center"><a href="http://www.databatrix.com/wp-content/uploads/2009/08/emanageSchedule.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="emanageSchedule" border="0" alt="emanageSchedule" src="http://www.databatrix.com/wp-content/uploads/2009/08/emanageSchedule_thumb.png" width="260" height="129" /></a>            <br />Calendar day shows all jobs on that given day </p>
</td>
</tr>
</tbody>
</table>
<h3>Solution:</h3>
<p>Build a separate web site application that will have the look and feel of the <a href="http://www.databatrix.com/2009/08/installation-schedule/">Install Schedule</a>, but pull its information from the eManage application.&#160; Job assignments and modifications will be made from within the eManage application and those changes will be reflect instantly on the web site.</p>
<h3>Result:</h3>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Installation_Calendar2_1.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Installation_Calendar2_1" border="0" alt="Installation_Calendar2_1" src="http://www.databatrix.com/wp-content/uploads/2009/08/Installation_Calendar2_1_thumb.png" width="260" height="195" /></a>Fig. 1</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Installation_Calendar2_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Installation_Calendar2_2" border="0" alt="Installation_Calendar2_2" src="http://www.databatrix.com/wp-content/uploads/2009/08/Installation_Calendar2_2_thumb.png" width="260" height="193" /></a>Fig. 2</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Installation_Calendar2_3.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Installation_Calendar2_3" border="0" alt="Installation_Calendar2_3" src="http://www.databatrix.com/wp-content/uploads/2009/08/Installation_Calendar2_3_thumb.png" width="260" height="197" /></a>Fig. 3&#160;&#160; </p>
<p>The web site pulls data straight from the eManage database so the info is always live.&#160; It also provides the installers and coordinators a familiar look to the schedule.&#160; Each user has their own user settings which allows you to view the installers that you want to view and customize the size of the calendar to fit your particular screen resolution.&#160; Fig. 2 shows that you are able to click on a job to expand the bar to see all of the information.&#160; The color schema for the jobs are the same as they appear in eManage.&#160; Fig. 3 shows the &quot;Jump to Date&quot; which utilizes a modal popup screen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2009/08/installation-schedule-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom Conversion Application</title>
		<link>http://www.databatrix.com/2009/08/custom-conversion-application/</link>
		<comments>http://www.databatrix.com/2009/08/custom-conversion-application/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 23:39:18 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Desktop Applications]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/2009/08/custom-conversion-application/</guid>
		<description><![CDATA[Background: One of the many things my company does is file room conversions.&#160; To make this short and sweet, a file folder may need to be moved to a new location.&#160; In the process the folder may need a new label applied to the folder.&#160; This is simplistic example of a conversion.&#160; A client requested [...]]]></description>
			<content:encoded><![CDATA[<h3>Background:</h3>
<p>One of the many things my company does is file room conversions.&#160; To make this short and sweet, a file folder may need to be moved to a new location.&#160; In the process the folder may need a new label applied to the folder.&#160; This is simplistic example of a conversion.&#160; A client requested this type of service from us.</p>
<h3>Problem:</h3>
<p>This was a large conversion and the client required several specific &quot;checks&quot; to be in place.&#160;&#160; The original folder needed to be scanned by a barcode reader to rule out data entry errors.&#160; The barcode data would then need to be sent to the client so that other various information could be added.&#160; The data would then need to come back to us so that we could print new labels.&#160; Since this was a daily process for approximately 3 months, some tracking was needed so that at any given time a folder could be found.</p>
<h3>Solution:</h3>
<p>I was to create several applications to aid in the conversion process.&#160; Starting with one to handle the barcode scanning in the first stage.&#160; Next a secure web site needed to be created to allow files to be received from scanning, downloaded by the client, and re-uploaded.</p>
<h3>Result:</h3>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Conversion1.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Conversion1" border="0" alt="Conversion1" src="http://www.databatrix.com/wp-content/uploads/2009/08/Conversion1_thumb.png" width="260" height="212" /></a> Fig. 1</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Conversion2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Conversion2" border="0" alt="Conversion2" src="http://www.databatrix.com/wp-content/uploads/2009/08/Conversion2_thumb.png" width="210" height="260" /></a>Fig. 2</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Conversion3.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Conversion3" border="0" alt="Conversion3" src="http://www.databatrix.com/wp-content/uploads/2009/08/Conversion3_thumb.png" width="260" height="137" /></a>Fig. 3&#160; </p>
<p>I created 2 desktop applications and 1 web application that included a web service.&#160; The first desktop application was installed on laptop with barcode scanners attached.&#160; This application would be used to gather file label barcode.&#160; Fig. 1 show the screen of the laptop with the application running.&#160; The screen provided various information and also included visual and audible verification of scanned barcodes.&#160; Because of the barcode situation on the folders, the application needed to check to make sure the barcode was in fact valid.&#160; <br />I provided 2 different way to get the scanned data back to the main office.&#160; One way was by using a web site upload utility.&#160; The other way was to have the barcode scanning application automatically send the file via a web service that I created.&#160; Either way, the file was placed in the same folder back at the main office.&#160; This folder was being watched my another desktop application that I made that ran on a separate machine.&#160; Once a file was uploaded, the desktop application would grab the file, import all of the data into a SQL Server, and post the file on the secure web site where the client could download the file.&#160; The client would add various information to the data and re-upload it via the web site.&#160; Date and time stamps were noted of all of the transactions.&#160; The re-uploaded file was placed in a different folder that was also watched by the desktop application.&#160; Once this file was uploaded, it was checked for certain required data, checked for the correct sort order, imported into the SQL Server, and marked as &quot;OK&quot; so the client would know that everything was good.    <br />Up until now, everything was automated and only required routine checkups to make sure everything was okay.&#160; The last step was to print out the labels (sample shown in Fig. 2).&#160; The step to print the labels was simplified into dragging and dropping the file that was re-uploaded from the client into a separate watched folder.&#160; Once the file was dropped there, it was sorted into a special sort order since their sheets were later to be cut into single labels.&#160; Then a cover sheet was printed followed by the label print job.&#160; After the labels are sent to the printer the printed date and time is noted in the database and viewable from the web site.    <br />Fig. 3 show the landing page of the web site application which allows access to several tools and lookups.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2009/08/custom-conversion-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cell Phone Usage</title>
		<link>http://www.databatrix.com/2009/08/cell-phone-usage/</link>
		<comments>http://www.databatrix.com/2009/08/cell-phone-usage/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 23:34:21 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[Web Applications]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/2009/08/cell-phone-usage/</guid>
		<description><![CDATA[Background: My company uses Sprint as a cellular provider.&#160; Paper bills are 300+ pages and arrive in a box.&#160; Sprint offers a service to download cell data at the end of each month (for a cost). Problem: Flipping through the bill was very cumbersome and took sometimes several hours.&#160; My company wanted an easy way [...]]]></description>
			<content:encoded><![CDATA[<h3>Background:</h3>
<p>My company uses Sprint as a cellular provider.&#160; Paper bills are 300+ pages and arrive in a box.&#160; Sprint offers a service to download cell data at the end of each month (for a cost).</p>
<h3>Problem:</h3>
<p>Flipping through the bill was very cumbersome and took sometimes several hours.&#160; My company wanted an easy way to look at the employees usage.</p>
<h3>Solution:</h3>
<p>Utilize the Sprint service to download data each month.&#160; Load the data into our own SQL Server.&#160; Create a web site to summarize that data while providing a simple user interface.</p>
<h3>Result:</h3>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Cell_Phone11.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Usage Reports" border="0" alt="Usage Reports" src="http://www.databatrix.com/wp-content/uploads/2009/08/Cell_Phone1_thumb1.png" width="260" height="120" /></a> Fig. 1</p>
<p>&#160;<a href="http://www.databatrix.com/wp-content/uploads/2009/08/Cell_Phone21.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Detailed Usage" border="0" alt="Detailed Usage" src="http://www.databatrix.com/wp-content/uploads/2009/08/Cell_Phone2_thumb1.png" width="260" height="180" /></a>Fig. 2</p>
<p>I created a basic web site to simplify the cell usage data.&#160; You can search by bill cycle or a specific data range.&#160; Users that use more than 1,000 average billable minutes per month are highlighted in red.&#160; Clicking the specific user will show the call details.&#160; Fig. 2 shows the Detailed Usage page which also allows you to highlight mobile to mobile, text messages, nights, or weekends.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2009/08/cell-phone-usage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

