<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:georss="http://www.georss.org/georss" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-6236973097452836208</atom:id><lastBuildDate>Wed, 25 Feb 2026 08:15:44 +0000</lastBuildDate><category>ASP.NET</category><category>Code Snippets</category><category>C#.Net</category><category>Payment Module</category><category>AJAX</category><category>API Integration</category><category>State Management</category><category>Javascript</category><category>AJAX Control Toolkit</category><category>C#</category><category>Entity Framework</category><category>GridView ASP.NET</category><category>IP Address</category><category>SQL SERVER 2005</category><category>Trojan Programming</category><category>DirectX</category><category>Encrypt and Decript String</category><category>IRequiresSessionState</category><category>MS-SQL</category><category>MVC</category><category>MVC  5</category><category>Multiple File Upload</category><category>POP Access From ASP.Net</category><category>Read Email From ASP.NET</category><category>SQL Server</category><category>Session</category><category>Silverlight</category><category>Tracing</category><category>UpdateProgress</category><category>ValidatorCallout</category><category>WebAPI 2</category><title>Open Source .Net</title><description></description><link>http://makhaai.blogspot.com/</link><managingEditor>noreply@blogger.com (Raju.M)</managingEditor><generator>Blogger</generator><openSearch:totalResults>100</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:subtitle/><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-5100532278816914379</guid><pubDate>Sun, 05 Jul 2020 02:45:00 +0000</pubDate><atom:updated>2020-07-04T20:07:12.600-07:00</atom:updated><title>Export to Excel using OpenXml</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
Some situations we need to export data in Excel format. I had such situation couple of years back and I created a repository in my bitbucket account.&lt;br /&gt;
&lt;br /&gt;
I thought it may be help for some one who is looking for same kind of solution while programming.&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Here is the repository url&lt;/b&gt;&lt;br /&gt;
&lt;a href="https://bitbucket.org/makhaai/exporttoexcel/src/master/" target="_blank"&gt;https://bitbucket.org/makhaai/exporttoexcel/src/master/&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;for Git Clone&lt;/b&gt;&lt;br /&gt;
&lt;span style="background-color: #cc0000; color: white;"&gt;git clone https://makhaai@bitbucket.org/makhaai/exporttoexcel.git&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #cc0000; color: white;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: #cc0000; color: white;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: white;"&gt;This includes there project. One model Library, One Service Library and a MVC project.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVgAAADvCAYAAAC31Mw5AAAgAElEQVR4Ae2d749ex1XH8yfwL1DJTtPGceLFdd3YWG3abZq2m4JSWSktSDgoSfsC0JpaMeoPVZGaKG1egLxh3/IiRRU1assjAVJeQA19gRFCWilYFsgSAe0LK3gpEq5oGXRm7pl75tyZe+f+mGef5+7X0qP7a+bMmTPf+cy5s8+uHzhx4lGDD2IADUAD0MD0GngAQZ0+qIgpYgoNQAOkAQAWGTzeYKABaKCQBgDYQoFFBoMMBhqABgBYABbZCzQADRTSAABbKLDIXpC9QAPQgAfshQsfM+fOfQQfxAAagAaggYk04AFLcH3g6k18EANoABqABqbSAL/GALBYXLDAQgPQwMQaAGAnDuhUKx/sIIuCBtZfAwAsAIusBRqABgppAIAtFFhkH+uffWAMMYZjNQDAArDIXqABaKCQBjoBe/2eqf/dM5c6iX7HLMx98/q1ng5f2ze3h9RL+kN+hP8W13v65G0P7JOvP7Rd1MPEhwbWWgOtgLXQE1C9tm9e74RULoxyyw0V2JT2p7Q1tD+ot9YTDYvt0dxuaAUsZa93983pXuLIhVFuuaFgmdL+lLb69+fZP/nXQJy4RjzkYgM9rLAeWgF7lcBizO0bbwcT3A6uzW7rV/D69VvCSJ4TWPja2fW1b90RzyoAddm/UW9dRP3zbUmgvW1evyv6EywglW/XaavC/avtst95vi1u3TfGVJl/0A9+G3D2gnK9FjHZJ5xL2OAcelgpDbQDlgbLQYmQE0JUXFuI8L6rhJE8J1vyWp7HnrXZN8ZYKN80D9g9YgaXFBfZl/+4DN2ncz5ynao8Z+ytfWr3LQnm6/eqxcq1VZdjH9qPyFRWOFO5etNgfDA+Eu5WD92ArSZ9lYlZyNpzBpZ7fukWQ4fgEYMtlct8lm1f26x8tdmgbEveZyizv/ysWT7apz6+VTGTmHcLQ7MtOTA45zHBEVpYcw1kA/bqTXP6xn2XOWZDRoNEXstzCqK4zrav6gWv2cJecD8XsC5zd1m7sNXHt0hZN2GEPe1b5BqZETIjCVroYY300ArY6/vi61Zy/5IAITLAACQSHhJSDLbc7DbH/hDAkn/pLQL/2p7sU27f2Tex5+vhKWNE5fBBDKCBWWqgFbA2qxQvuLzvSUCwAOJnDE2GiriW36O9dU9sH9w09Apu/3X+kEvYk5muBVMKVg6E7CEdb9+4E/yQy2bkvOda2XU/eHK1wj1n4UNu3xtx4r3jlM+YZLOcZFhAj24S0Q7YozThAT3A7SjpHX1dit4BWBYaALsUwSGbO7rZ3FEcewAWgAVYWQM4QgsTawCAnTigR3GVRp+RlUIDcQ0AsAAsshZoABoopAEAtlBgsaLHV3TEBXE5ShqQgOVzHPHfDUMD0AA0MF4Dwf8qi4CODyhiiBhCA9AAawCAPQExsBhwhBZyNLDxRz8zG9/690k/p6791OS0vW5lAFgAdpbCXreJuE7+Elyn9vexr/795Dan9nGIPQB2jQH7nve8x2xuPjVLYQ4R81Gus0wtALD5bzoALAALQK+xBnhRAWDzoccxW8bxyAH2kUfqgZDnY4L9yFOXopD60PmHjP6MaUfXXeak0m2vx/VJc+IEfeoxn+v5MrWADDZfTxMAlkXMx/zG28XO9vg43i4D9dvf/rahD7f/4x//2J/zvZzj+888YR4692mz/ed3zeZXvhfYeOlz7zdv/+kXG59TZ98XlMtpJ1Wmz6T62te+Zqif/Hn11Vcn8yPl3+HfP2meeupTZmPj9Er1lcdAHqUeh8Stjxa0/QsXPmLeeOMNrw3y6wtf+PVkzADYfBYNBOxJ89hjG+bDH37CfOpTW2Zr6zP2Q+d0j57pQcy7LmX3USPhysJmUdN1nn91YAmuV//aBJ/HP3/FZqznP/ig+Yfdp8zNN540jz122n8IuJTR9m0rVb7vpGLIrgJcKfYUdx6DVB/73+cF2R1Jm6TLM2fOTpbNsn5ixxx/qZ7UBZ/n1E2V6asFtkNwfeuttwK4do0JAFtzgOOYOg4CLGUEEqwMWD7SM5c1kMjznSllV8P1i1/8kqEPT3A69vGTyjJgHzr7CfM73/s388mvf6+RrcYy2MMELPlNff3ABwg2+eMyddmScD158jFz/vwF8+STT/mFn3VJ96fui7SXqyMqx1CVR7qvP12w4/aHAlZnrrq9WCYLwObPnd6Apey0Da4sZirTJ5MtZTcGVxY1Q5YnBpdl0bYdGbC2zJO/bjPTGFD1vaMOWIarBom+bot9/NlJu6jTlgBrUB8Jum5Ptt/Cz+1pH+U1laFrLtt2pHKkwVSZk4+c8gCmshp6sXpDASv7QOcUP7bPY8XXfARgCwKWtgCkcM+efdy+ftNR3qdzKsuD0nXUdql+ynauXQYmC4WAynDlI0OWRcx1uvyl5wRZWU7/QOvpCw82strDBqz097nnnjPf+c53zI9+9CP7oXO6J8tMfc5joSe2vu7bLmWucuEnjVDGypp0mhkG1i5fyHcqw8ec8gxY3W+6phgxZPk56zNleyrA0nYBQVaOk24TgC0G2JOBiFMAZFGT4PN+ihva5fopyObYZVCyUGJwHQNZFn7bkWC6ahksT5ZvfvOb5gc/+IHZ2voVc/r0Wfuhc7pHz7hciSOPycsvvzxZO3KBrvdbT1rAPv74eaXDfqBtG2OKDz2Xx66YUXkJWNYhH+k5xYghS/e5jZTtqQBL7eiPbjMXsNqOvpZ28YsGds/OCVaCj0AW+zAkcwHL5WO2+J7MknPs8kRugyuLWmeycvBj51osseu+gL106Tmzu7sbfOherH26N3RSUZZKIP2ljQ/aib5YLHxmT/foWVcm29dX3QceGzrqZ/2v6wX6woUPC3snzenTZ8S2AIHVbSXk6If9oLFlncgj3acy+sj1Uke2x3WlTTqn5/SRkOU2UjaHaIH24n/4wx/69rhdeaQ9Wt0mAFswg2UQcvbK8NNHLpcn5Brc2o68HgpYLeDUNYtaCyp2TWWfeOLj5vEPXYh+6HlfwFI7BHqGLJ3H2uZ7QyYV1aWtAMpWOQ70WsjndKRnVIbbSR37+JqyIe8PhS5tD7DeHFB5Ajigchu0z897tHm6dHZoLGV8+Jzuk2195PZSR7bHdcke3eOPts/PU/bofl8tEFy/+93v+ja5bXkkXdC3DHS7ACzrq/vY84dcdaZAgmbISvCx0OmY8yrvBi+0K23Q6x1BVraRY5fqkG0SDAuWhSpFpJ9RHa6rhSWvyQbBVdaX5/RclqdzvWern/M1gasLrlS276Ri+7TnStsC7K8GLD2jMly+7Zjra5sN+WwIZNsBW08Cgi9rawhg5dfyKHY8xnyU/Wg7p/JUn8rwOY+FPLJd2VbKbh8txOCqM1nKXGNwpfY1YMnPIR/ZF2wRVF/rkXtdJNY2yLofLNQClwHV59pum+0+drWAtRBigta+xa7JTjZgn3Rf2qYJmgvZWJv6Xp9JJevGAEuQZdD2Aay02+dcj0PsOn/7oH4DIj2m/JCL9BDASq1I6JHvqTZj97mv9IzO2Rbfl/eoDD+P2eJ7uVqIwZUyWbrPtrqOGrBd5XOeA7AVYEt9naqUXRYrTw4p4tizHDFQGaqbA9gzn/+K+fJf/sQ8/NFn7S8lrAJg33zzzWCLgGPDR9oioDK5sRhSTo9D7LoPYD/60U2bndLbDWW02if5LQMqOyVgdVt9rrUGeQzoSM/IljxP2c4B7BRwpfYB2LykkWLVc4uADLsfEpCQ+XVLH+lZ/180KGNXC1hP5JigUyKW98lOF2AJpgRX+Wq5CoDVP+SSMcj9IZeMxZTn9M0Cim0+XGtNsg5pn9Vlsm4Pls5575XK9NWm1oy8Htt3ssUAZbs8HnRN9vl+W1s5gNV7rn0zV24fgC0KWCdoyjjpVV2Cls7pHj3rkyHwwFGdqe2ygKVoWbCxZ7Uv7UGUNlLnZOvUZ7fNlb/6b7PxzO9Ouj1AtnMmVao/h/k1rZRPQ/ZfpS25BcCw1UcH3vaxlTZLn2sNsk4Zurnt52hB6nQoXMkfADZfPwMyWG2cf1LLR/186DXb4+MwO1JUOee5gu5T7uGPp/9wRh87umzOpNJ15DVlsrQVwL9oQOddX8+S9Vfv3H0ta3PzycbbFd2rv7I1TEsl+tulydw2c7TAGewYuJI/AGy+fiYAbH5juWJBubyY5kyqoxdLWpBp33LDApWg6t6oKKbu2RxjskwtALB585N0BsAe4h89GTvRlzmpxvqK+vmTckislqkFADZ/LAFYALbxE/chExx18iddiVgBsIcb/9SYArBrDNjUoOL+ak62uYwLMth8fQGwACwyWGiglwbov9imXwyY8rPxB//Vy4d1WawAWEyuWQp7XSYg/MzPBtcxVgAsAAvAQgPQQCENBIC9cGHT4IMYQAPQADQwjQYagN3YOGPwQQygAWgAGhivAQAWCwoWVGgAGiikAQC2UGCx+o9f/RFDxHDdNQDAArDIXqABaKCQBgDYQoFd95UX/iN7hAbGawCABWCRvUAD0EAhDeQB9uJL/j/i2919yVws5IxbMZ81V3ZfNc9vZqwevf3qYVv2cfNF80quT7Je8pz8CP/32CsXM/obtTewT1FbeT5sPv+q2b3yrJiUnzDPvyL688qLZjPL/jDfL17ZNa88/wnRfp7fyMgQp2VroBuwFi4CqpsvmucHwyBngDMn3SC/Mm1v5JbL6U+szJT2p7QV81Xdo7hLgNpx2DXBAuE10uVb13PVtoc2AT1zEfZ1UrZwf9nQOUrtdQOWskQ5oYoLNnPSDfIr0zYAm8wOKXuts0eXuQZwDfTRFe+u5y3wo/EPsuiWsoFPKHeUAHfYfe0GrIVN4pWsyl527etuneXSK5y7tysmgZtMV668aupthvDV0k3UatJdpNdyZ6ee0HJyULkcv2R2JSe0PCe7fO3shv7zs6r9oN8R+8/XWypp33UG5mLhywcLSNV+NCb9fAviH/SDx8/ZC8p5QKnM0dbnenJsOJ5aB9q28t22Q21EbAbxOGM2qO2lLvy6f7g+bHitQ/sZgCUh1SCssxU1OS6+JDIbFp8sQ+cSiAoofhK7cj5rpomV3PdN+SWgZyHAMNP+8H3yt8+zNvtiUUn6XvXR78MyUOg+nfNRxnG3fpNo7VO7bx7gQX/PmA0/fs63uhz7wDFiX3MgR7Z0jKUG9HNqIxOwjRhJP3G+DvA5Cj5mArYSrJ3Y1QSuzn2mR7DgVzYLFs5eeIKpyWTri8kaAJbrULuqni8nJlHDr9AuZdRBdmx/gKbtymt5rnyI+B23r+oFfmv7oi9V7OqFLG4n2mYf36qYNcevxTcNtUh74aTRtlquY/7s8riJ+Pg4EoilTmJlcC8cD8Rj2fHoB9iNM8b/BDk1uYL7chKoyRWUkwOvyuUAtsOvKIwadmW78px8E9cRv+P2VT0Phrb7LpMk6LUD1mXujUWjj2+Rsk58oq+Bz+y3XLykH/Rcf7StrmuqTzZlG9omX5OtnHJcHsfm+CAmpWPSDdiLL4qvTLkJ5V4fSeDyda8aLMrAeG/MTmLOMvTkkrbkQOty+prbaffLAyoAibSl4GAzx5Svsh6dCwAm7ZOfsl5bH/kZlSdo8FHeF7FOttnXN2HTwzHlM/lCMeMYVb7FMu7ktwi0bX3NbWSAk2LAOvO+c7xwLA0O2M/TWDdg7WTn132xDUCithNdP3Pgsq+er7xkrvgJGZtMdK+u38jI7MSJ1aPOhXX99kTDLwkEZauCg/X1ykvBfiFlpe4+fd9T1Qv63WJf1/MgUL7bhepZ+11S3vu0bwoeIK5994Mn55dfQHQb2b6lxk/11fvsBBV+i6ASWdCm2CveOGNa46h9V20Fk1gu3FSOrnlLqq0enkXeLPLgEMQfcRwUxwzAYjAOX2jt0FuqfwRTD/7laaPehqE2I5k0ADAIAEvVzhEcIwB2LQZ9hQAr97uXFjvqf71tYLNiZK8A6tL0NzyRAGDXYJAaWxRr4fNwUSKrQuzmogEAFrBCJgQNQAOFNADAFgrsXFZg9APZJDQwXAMNwOI/O5vmPztDHBFHaAAaCAC7jv/vOHye9/8rj/HF+K6zBgDYQv8f+jqLAr4DatDANBoIAHvs2HGDD2IADUAD0MA0GgBgsahgUYUGoIFCGgBgCwUWGcA0GQDiiDiuswZGA/bGjRtmyGedgwbfMemhAWggRwMALDJYvB5CA9BAIQ2sJmC3F+bg4KD6LMx2Z+cvm8XBntnZ6rmqbu2YvSH1kv5cNou9HbNln5NP3Ad3XGz39C/ZTr6d7UXoA8d1b+fpxKQq7bcaq95jnd/3dIahfIjGWY5ls82tnT1zsLhsjh172uzs1TEeNMYcA68dbm8C29G+sX1xnHwuCNvHjhvSYVpzYdn0uK1fuUkA2zcgtKWQrGMHWkB1a8fsdIIpZ8LQ4OSWGzqQclKWbivlY6rd1H1tJ7ecrpd7LewPGuvcdtrKCR+SAJJjqWyR3x6Gl80261P3J2lb2iNfDkwczGNty3ZKnufEkxaLAUlQVgxL9m2c7dUDLK3mXry5ncsZYLKVWy63XV1OTsrSbem2+TrVbuo+1+Njbjku3/co7A8a677txcoLH5ITWI5laIOy13g2RnZFcpC0Le3l+ELlh9iW7ZQ8z+wDjbfN+kv6slq2Vw+wVkiJ1wmbIcRex+QAy3MKNl/Tsa7rBpqfVYPSZX+n3rqITzA5uMq2nWzulc/XDQBTld+mbQvnpy9HdTt8Wyz2xLZK1c9AzMqfDnvhdkub39TnxKts0AaDR/pB5/GxDrY2fD+aMaLMz76uN2LWLFvHU/qgY8t+yrGU5y2ZWBtAglhwxur6371tc9wcS9ru7qfTRtWvqB/Uv9yY6LEO+9C6bUJt906eZOzX73w0YL///e83Xve/8Ogfmssf+guz+eCXGs9oa6B1i0CAiIRXvzq5gfTXVij8yiHFIc+1cLqeifYa9g/q1ZfE3pmpOH958tTl6T6JnY8smqo8CzDSfrrvElJkh+PCtmNx6OirX4wYOOwvH9m2gq/P2pQf24sq61P3BZx9/7yNuN/+DceOg+h7MC7UzkH9NtSIJ8dI+eP95P7pI5XnmLhnHvB+IYjVaYs3+6LricWjw7aPSaOfIj5V8uLj3CjLfqRikj/W8Uy1GbvkVmGggWZc1qXeaMASRD/wi5/2ICW4fv1jf+s/sUB0A7YKqBVAJUx7HgqbshwnFikIeU525LU8V8+y7at6SSHotqo+UfkKDF7o1kazvO/fJL4J+73sdfgdsWXH3N4XbwwEOwsJ4YeMXVXex6SKkVugEhM/GFs9Ls12fDxlvaSfot/ST1s31KHXuPWZfRX1IzGK+hK0I+rT/ZRt2ZeqftJ2rh+pmETqu76rWFf16zcG7ktL9t/W9zV+NhqwDNNPv+/3DMP198//zTSAPVat4DQxI4MbF5Ia7ECALc+y7ZNYtB0WkDy2lMkCrMsWLHAm8U3408ue6FPM74itGrAxEAk/1MTxP5kPbMpJqeu2XetnIp5y/IK2RF+Vbx6itm6sX65urUlhK9JGXU77KeopH+o6soyun+gn2cr1I1JuyJhyZu8XzY7Y1TGW/Vvv80kAy2Al2P72mT+zGS2DNxa01gx2e0d83cqJxa2EJCTOWLVYpMikwPTKL8vRwMnrXPu6XkoA0rYsQ/dpgvKRn7n2/aofiNw980JtPJNZE5WV19I+3+9jT9aP+S3HiMvSUfXHw0L4lxprAnlyq4T7wG2krlX7yZipct5P2Rd5Tv0VbW5fFl8jFH0L7Lg28sZPtNXDdlo3wtdqTLr9SMWkbaxlO3UfCLKBbzyuQXzq8jFerPO91QNsJQK/dyn3nuwk4ddOOaBK2FWmZW0sFgFwKAtw9+k7jKpern1dLyoWJ1LfD/vDnMv2O5MsOLvCe8E5X+QPq/xEIPvZvrnvHNZ9ZPH26SvH2B33dtr8JvthX73fgc+xLYKwXr1v5yay7cPewiw80FQfGuMgn7vzeDxlOR1b9pPj1jw2oOH3q0UCoDURxKJFu7JeUCdlu0c/++hItV2PDbVX64PHOphXcv7J/Wq6L+ez7OtMzycBLGWrbVsElLHqzzqvSmV8V5N+poIrE7smBBuL55TxJPj4hTHW9jLvTaUbspPe+hg/birzn3I8VtjWaMAO+SHX+MFapoCX1dZUE2VZ/q56O2Xjad8+ViIbm6ifclumALBshrsS8VqubkcDNgbLrq9pxerg3kQTpcDkWM+xOSrxHNlPvxUgty2WC6H11FdejIoAds4BQ9/yhIU4IU7QwHEDwCLj899hxoQAFKGBaTUAwAKwACw0AA0U0gAAWyiwyASmzQQQT8RzHTUAwAKwyF6gAWigkAYGA/aZZz476aC88k8vmyGfdVzV4DOyMWjgaGhgMGD39/fNlJAluD700MO9PlQnLVT6+kr9Gyf0W0H8WyfpOtMPuv8NF+UL/zZX05fSfqe+1lO1m/iuov3eZ/RXcLtilmpP1sspI8vjvKkbxGQVYzIYsASsd955ZzLIlgHsYXy3LwWL1H09MXLL6Xq51yn77v6e/7VUaY+e0WI1JJ6p9rT9IbalDZyvImCOuk+jAPvCCy9MBlkJ2Oee+y3/q7V0Tpkt/aqtPNJ5dwZ7GJM2BZTUfQ2G3HK6Xu51yr67T7+738iu7e+Qh3/TIX/ipNqT/uaUkeVxnh9/xOowYzUKsOT4VJBlwDJcNzZOW6CeP3fBw1b+PYNhgFV/DSj49cBqkh+p/1FATj6GHB3l76Tz75Dz86qO/w0gtw0TbL+IZ3s7O8Ef2wn/aA23o2wX+oHDYU40tC21dnTORwOWhPPaa9+ymeypUxste6LtQWXAEkQ/85lfbezFDstg5R6snMx0rkFC121/AV/s4VqAcHbs6tVZXwoW8r6r46EUsWf/kpR9Le/yWy0aHk6yPfdnG52P6n6kPO0bB77ZP2wi63X7z/XDvVtpI8ends0AWojPqmtgNGDpB120F0uZ7JjOtgFWZq58PiyDrQRJmWvjh15q8lf/1bAFhQUgg87ZqCGk6+lrngTifi97XJ//tq2AH8ExYsuOg70vFxj+M3zCDw9XakPcp7rVX4uK9jPSpi8n6jo9KLvqh32t/8tB4J+IA+6Pmmtj5inq9tPhKMBOBVcaNAbsl798xW4JyC0CuffKmWx5wLrMcL0BGy4KDeAFoBIgtP9P1p7Zoe0S/2f5xPNRgO3jUz8xY/IjXqumgVGAnSJz5YAwYAmcDFmC6ec+92uN7QIqMxywBAqa5HxkUdK1+A/iAoi4Z/zaG2aN9Iy3C8iWvpb2uVwfe7J+zO+2LQLRHw9T6V/qvM6W41sfXf7XWXZzi6DLJ+4vjjw3cFxfLQwG7Lvvvjt6W0AKRwKWAdp1pDrSRnjuIFDvZdLEbvvL/A428b+Az6/i/MrNoKSBl5ByQqDXZdtu8J1SVc4CPGWP77tju9/sQ10nXAjq+83XcemTPCebBG6ZbarnSf9rOFMM2n/I1bVt4eIZjivuIR7ro4HBgB2756pFMj1g+w6CAojP+PraQXk9triGJo6qBgYDduqAEWCHfKbzA4CdLpYACmIJDZAGVgawhy9IAPbwxwCTEmMwLw0AsNgKaNnHnpfYAS+M57I1EAD2gas3DT6IATQADUADE2ngxIlHDX3OnfsI4IoFBhqABqCBKTUAwE60Uk05KLCFSQ4NzEMDqwDYsfsieJ3BIgENQAMrqYGhgD23+8+TrTAE2CFf0aI6VHclA4sMBOMCDUADQwH7k5/+3EwFWQZs129u6eftgL1jFib8t7i+/FX+0q3QB766fePthPhK+03275vXr0Vicf0eu2eMuWcuTQGIa/vmdqq9KezDRkJHkfFFrJYfq6GApZn4n//zs0kgWw6wCZAUFVoKYKn7eiLkltP1cq8T9i0IBVSv7ZvXD2FBwttI7jii3FpoZQxgn3nzXyaBrAYs/9Ft+mMvOf+jQTzQCZAUhSuJPtVu6r6eKLnldL3c64R9yl7v7pvTxeOT6yfKxXWNuKxVXMYAljo6BWQlYBmu8s8V8t+AlUfaLujeItAZ7Nvm9bvG+NfzACoVeK7TK63758sRdGyGV79B19sNrt7i1v36IZ/duiNeSRTYOuyFr/BtftOEc8+5We9b0AZnp8oPD1S6L2Lj7+u+h3Zcv++b23eN8e1SXR9b3V4fXwGTtYKJ1AzO3dwfC1gSwNff+g+byf7CN/5RACV/ckjAEkT7/o8GcRE6YDB06j1Fuk+Q4CP7WZXnLM7CiQHtnnmARJ7VMKayXI9t01He77aX77eCrxe2bM8Bz/mo7vvy5GMNP9/XwG9tRwCZgCoWFNp7djZke319lfHDeVzniMtKx2UsYOkHXbQXS5ns0I52AVZmrnw+LIOtxEgwMAwAFqgEgbvnIWGBypmbeqYB1LiO2O9lj+tXWaH2O2LLjoO9X2PanlkANvvZGLeqrgVkth2yyzG6Yxa8UMl49PZV9D1YCHC/MWaIz2D+FI3lGMBOAVfqnAQs/7FtuUVAMCWwymN5wLpsq4YMw8NNbg9fCRAr8hTAxP0IaNL2BExiC0PElhVM6n7DX2FfTNLTN+67jLSHHapDWTIfnXDb+93ua9w3ZxfPEIc10MAYwI7NXFkgErAEToYsQTXnfzRgO+FRTGwBDveqnt4i8K/6AVjIlsh4G8/klkBbu1yujz0WEdWJ+d322i1e4X0MpH/i/Pq++OqWtOl89XGJ2ql8pLjcvWcWd+ViJNqotiDitmK+ct9xDLWNeKxNPIYC9n9//n+jtgVkgDRgCbI5n+4fcoWvyLdv3Al+yGWzNPUqK39YVe9D6h/0MChJ6BIgTviUjdav5DwZVDkLafZP2+P77tjuN/tQ1/F+B22Yao9U+qHPaxtyP1X/gM89k3W5jw7MQd1GfKhe/a/dV7aLo5wvOF8jPQwF7Jg9Vy2QMoDtOwgxYPS1gdJ45XwAAAlPSURBVPJ6bHENTRxpDQwF7JRBY8BSRtr3Q3Wn8QWAnSaOAAriCA14DawKYAmUQz++M35/cMgAA7DTxHFI7FEHsZ+pBlYBsBDXTMU1asFDTDAvZqABAHYGgwiQTbRNBC0A6hNrQAJ26Cs66g3f3kDsEDtoYL4aCP5PLgz0fAcaY4uxhQaWrwEAdsQP1yDY5QsWMUfM10kDgwH7zDOfHfxT/1iA+G8M9D3GbOEeJiE0AA2sggYGA3Z/f99MCdm+YOXyySBu7Zi9gwNzID57O09Puigk245mxU+bnb3QH+/b3o7ZitY5bo4tqx/bCxsrH6Pq2vt4sDDbKR+nvK/9mNI2bB2i/o8m8AcDlibeO++8MxlkGZh9j0nIMZja4FV6wlWwWGyH4tra2Qth1ubHsvohwcZtLi77Cbm9AGCTWmsbPzzzGjqK8RsF2BdeeGEyyBJY6e8PvPfBh8zx4w/6D12n/i4B1UkOGkPiEAG7vXAZ67oBttcCMDVAJOintg176fmC2BSJzSjAEtymhOzJXz5rfvOPfyP4dVm6pvvvfe/7G6AdAliGx0GVnQXXPLkXi3p7QQK6es6vzf51mmHutyMWZlHBlctyexQzbtPXJ3F32ZZ+CBtsl23ytd5a8G1pX9ku9522UYQvvh5PwFR9vr+3V8fuYM8sFi5bt3HgjJjbisWZn/F2Dtvl2LK/7A+ORcCQTFwQ717xHg1YGojXXvuWzWRPndro1bgcxIcvbJhv/N1XzSevblnAUtZKf5eAruk+QVZnslmA5Yl5cGBcJsl7oXtmZ+uyWdBznrQMluqaoWUhw88UmK1NDwGyWW8HZGewWbbr/dvOfrA/3C8/Kar+Mui4HF0rsHHfeYFogJZsyjpsS8XOAV/GvK7Hcee2ZJxdey3++j7V8ZZ6wjnisgoaGA1Y+kEX7cVSJjumQ5SpEkwZrPJI9+m53i7IAmwDMvoHRwKKEhg0gRkai8umAUvxzJdTbTXqVFAIgHLs+CDbNtbsg11E6n5o+35cGORi0fGZpe678vXgoLbv+1vZsTBkX9QCxGB2sahs6LZkXfmszV8AdtR885pAHIvGcRRgp4IrDXbOX9GivVmZxQKw8psSNQAZsL32fiXY1KST9njRaGSbEpJiC2MMYLldtgEoICtdNw2MAuwUmSsHjADL8ORzPnI2Ow1gxevqdgUozjw5Y1KvuRZUCkA8+YMtArajsr9O0A2wfexYSz8YdsqfOvMU3wjY3nHbGsKHrZ2F2OoQ7WzJc7WXzG32yGD1FkEjzmxTfkWM/VWLAOsIR0B4lTQwGLDvvvvu6G0BGYhiGax8HRav+pwVMSjtXiEDVtXxfqrnbMODSwPtWLWHSPZ43zOS3Vn7XbaVT0EmKWz6djyc3N5tw1dvr/na7mOiyxDUhJ97e+LrZtxeH8B6+yI+lf1OfwHYoq+2XvOI86g4Dwbs2D1XPYCT78EOEYae3ENsoE63IBHn7hhBR7OI0WDAakCOve76FgE9pzZo31V+xrYb1MfEX46oEeflxBmQPvQ4rwxgCXQEUcpk5XYBXTNcAxiWEA8m/nIEiTgvJ84l5ghs9hq7lQJscYBCHL3EgfHAD4yggXEaAGABXUAXGoAGCmkAgC0UWKz841Z+xA/xm4MGAFgAFtkLNAANFNIAAFsosHNYfdEHZJHQwDgNALAALLIXaAAaKKQBALZQYLHyj1v5ET/Ebw4aAGABWGQv0AA0UEgDAGyhwM5h9UUfkEVCA+M0AMACsMheoAFooJAGANhCgcXKP27lR/wQvzloAIAFYJG9QAPQQCENALCFAjuH1Rd9QBYJDYzTAAALwCJ7gQaggUIaAGALBRYr/7iVH/FD/OagAQAWgEX2Ag1AA4U0AMAWCuwcVl/0AVkkNDBOAwAsAIvsBRqABgppAIAtFFis/ONWfsQP8ZuDBgBYABbZCzQADRTSAABbKLBzWH3RB2SR0MA4DQCwACyyF2gAGiikAQC2UGCx8o9b+RE/xG8OGgBgAVhkL9AANFBIAwBsocDOYfVFH5BFQgPjNADAArDIXqABaKCQBgDYQoHFyj9u5Uf8EL85aACABWCRvUAD0EAhDQCwhQI7h9UXfUAWCQ2M0wAAC8Aie4EGoIFCGgBgCwUWK/+4lR/xQ/zmoAEAFoBF9gINQAOFNADAFgrsHFZf9AFZJDQwTgMALACL7AUagAYKaQCALRRYrPzjVn7ED/GbgwYAWAAW2Qs0AA0U0gAAWyiwc1h90QdkkdDAOA0AsAAsshdoABoopAEAtlBgsfKPW/kRP8RvDhoAYAFYZC/QADRQSAMAbKHAzmH1RR+QRUID4zQAwAKwyF6gAWigkAYA2EKBxco/buVH/BC/OWgAgAVgkb1AA9BAIQ0AsIUCO4fVF31AFgkNjNMAAAvAInuBBqCBQhoAYAsFFiv/uJUf8UP85qABABaARfYCDUADhTQAwBYK7BxWX/QBWSQ0ME4DACwAi+wFGoAGCmkAgC0UWKz841Z+xA/xm4MGAFgAFtkLNAANFNIAAFsosHNYfdEHZJHQwDgNALAALLIXaAAaKKQBALZQYLHyj1v5ET/Ebw4aAGABWGQv0AA0UEgDAGyhwM5h9UUfkEVCA+M0AMACsMheoAFooJAGANhCgcXKP27lR/wQvzloAIAFYJG9QAPQQCENALCFAjuH1Rd9QBYJDYzTAAALwCJ7gQaggUIaAGALBRYr/7iVH/FD/OagAQAWgEX2Ag1AA4U0AMAWCuwcVl/0AVkkNDBOAwAsAIvsBRqABgppAIAtFFis/ONWfsQP8ZuDBgBYABbZCzQADRTSAABbKLBzWH3RB2SR0MA4DQCwACyyF2gAGiikAQC2UGCx8o9b+RE/xG8OGgBgAVhkL9AANFBIAwBsocDOYfVFH5BFQgPjNADAArDIXqABaKCQBgDYQoHFyj9u5Uf8EL85aACABWCRvUAD0EAhDQCwhQI7h9UXfUAWCQ2M0wAAC8Aie4EGoIFCGgBgCwUWK/+4lR/xQ/zmoAEAFoBF9gINQAOFNADAFgrsHFZf9AFZJDQwTgMALACL7AUagAYKaQCALRRYrPzjVn7ED/GbgwYAWAAW2Qs0AA0U0gAAWyiwc1h90QdkkdDAOA0AsAAsshdoABoopAEAtlBgsfKPW/kRP8RvDhoAYAFYZC/QADRQSAP/D4xv/KQtddB4AAAAAElFTkSuQmCC" /&gt;&lt;br /&gt;
&lt;span style="background-color: #cc0000; color: white;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: #cc0000; color: white;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;img alt="" src="data:image/png;base64,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" style="width: 100%;" /&gt;&lt;br /&gt;
&lt;span style="background-color: #cc0000; color: white;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: #cc0000; color: white;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: #cc0000; color: white;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: #cc0000; color: white;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: #cc0000; color: white;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDAFIkmHxoVe1Ek1wyTv45-XNugEihnCF9nDeyJyXBK1Ns9nR4-Q664f_RKVz2HJtOCY83mILypxpYkaq9f2m-AsYljBOaVcN0v1t3ioswlyQHOk_RqbEHQYm1rKW7qPTts0muzWIZG6M/s1600/ExportToExcel.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1027" data-original-width="1565" height="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDAFIkmHxoVe1Ek1wyTv45-XNugEihnCF9nDeyJyXBK1Ns9nR4-Q664f_RKVz2HJtOCY83mILypxpYkaq9f2m-AsYljBOaVcN0v1t3ioswlyQHOk_RqbEHQYm1rKW7qPTts0muzWIZG6M/s320/ExportToExcel.PNG" width="100%" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: white;"&gt;Basically we can plug&amp;nbsp; List&lt;t&gt; data in to it and download it as Excel&amp;nbsp;document&amp;nbsp;&lt;/t&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #cc0000; color: white;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: #cc0000; color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre name="csharp"&gt;   public FileContentResult Download() {

            List&lt;excelsheet roduct=""&gt;&amp;gt; listOfSheets = new List&lt;excelsheet roduct=""&gt;&amp;gt;() {
                    new ExcelSheet&lt;product&gt;() {
                     Records =Data.GetProducts(),
                     SheetName = "ProductList 1"
                },
                 new ExcelSheet&lt;product&gt;() {
                     Records =Data.GetProducts(),
                     SheetName = "ProductList 2"
                },
            };

            var excelBytes = _iExcelWriterService.GetExcelInBytes(listOfSheets);
            var fileName = string.Format("{0}_{1}.xlsx",
                                      "Products_", DateTime.Now.ToString("MMddyyyyHHmmssfff"));
            return excelBytes != null ? File(excelBytes,
                                             "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                                              fileName) : null;
        }
&lt;/product&gt;&lt;/product&gt;&lt;/excelsheet&gt;&lt;/excelsheet&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2020/07/export-to-excel-using-openxml.html</link><author>noreply@blogger.com (Raju.M)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDAFIkmHxoVe1Ek1wyTv45-XNugEihnCF9nDeyJyXBK1Ns9nR4-Q664f_RKVz2HJtOCY83mILypxpYkaq9f2m-AsYljBOaVcN0v1t3ioswlyQHOk_RqbEHQYm1rKW7qPTts0muzWIZG6M/s72-c/ExportToExcel.PNG" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-328110067936386990</guid><pubDate>Sun, 05 Jul 2020 01:42:00 +0000</pubDate><atom:updated>2020-07-04T18:42:59.213-07:00</atom:updated><title>Online typing tool</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
Apologies, I was out of track in a while. I will be starting my blogging again for good.&lt;br /&gt;
Last couple of month I was working on some of my personal project. couple of them will be online in weeks.&amp;nbsp;&lt;br /&gt;
One project I wish to discuss now. Its &lt;a href="http://eazytyping.com/"&gt;EazyTyping.com&lt;/a&gt;, Its a online typing tool that uses google translation API and it having one typing game for users. Uses can mainly type Hindi, Malayalam, Guajarati etc.&lt;br /&gt;
&lt;br /&gt;
Feel free to comment.&lt;br /&gt;
&lt;br /&gt;
Thank you&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2020/07/online-typing-tool.html</link><author>noreply@blogger.com (Raju.M)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-2517336963931018342</guid><pubDate>Tue, 14 Jun 2016 12:34:00 +0000</pubDate><atom:updated>2016-06-14T05:34:09.664-07:00</atom:updated><title>Covariance, Contravariance and Invariance</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
&lt;br /&gt;
Covariance and contravariance are terms that refer to the ability to use a less derived (less specific) or more derived type (more specific) than originally specified. Generic type parameters support covariance and contravariance to provide greater flexibility in assigning and using generic types. When you are referring to a type system, covariance, contravariance, and invariance have the following definitions. The examples assume a base class named Base and a derived class named Derived&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Covariance&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Enables you to use a more derived type than originally specified.&lt;br /&gt;
You can assign an instance of IEnumerable&amp;lt;Derived&amp;gt; (IEnumerable(Of Derived) in Visual Basic) to a variable of type IEnumerable&amp;lt;Base&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Contravariance&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Enables you to use a more generic (less derived) type than originally specified.&lt;br /&gt;
You can assign an instance of IEnumerable&amp;lt;Base&amp;gt; (IEnumerable(Of Base) in Visual Basic) to a variable of type IEnumerable&amp;lt;Derived&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Invariance&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Means that you can use only the type originally specified; so an invariant generic type parameter is neither covariant nor contravariant.&lt;br /&gt;
You cannot assign an instance of IEnumerable&amp;lt;Base&amp;gt; (IEnumerable(Of Base) in Visual Basic) to a variable of type IEnumerable&amp;lt;Derived&amp;gt; or vice versa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Read more&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://msdn.microsoft.com/en-us/library/dd799517.aspx"&gt;Covariance and Contravariance in Generics&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://youtu.be/jtzPBYBub5Y"&gt;What is covariance and contravariance in c# ?&lt;/a&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2016/06/covariance-contravariance-and-invariance.html</link><author>noreply@blogger.com (StackOverflow)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-1165678590572086563</guid><pubDate>Fri, 27 Feb 2015 00:34:00 +0000</pubDate><atom:updated>2015-02-26T16:38:37.882-08:00</atom:updated><title>Entity Framework 7 -  EF7</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Entity Framework is the popular ORM framework from Microsoft.&amp;nbsp; EF7 is the next major version of Entity Framework and is still in the early stages of development and it supports Windows Store, Windows Phone and the Cloud Optimized .NET well as Mono, on both Mac and Linux, In EF7 Microsoft will be enabling providers that target non-relational data stores, such as Azure Table Storage.&lt;br /&gt;
&lt;br /&gt;
EF7 will be a lightweight and extensible version of Entity Framework that just pulls forward the commonly used features. In addition, we’ll be able to include some commonly requested features that would have been difficult to implement in the existing code base, but can be included from the start in EF7.&lt;br /&gt;
&lt;br /&gt;
We’ll be keeping the same patterns and concepts that you are used to in Entity Framework, except where there is a compelling reason to change them. You’ll see the same DbContext/DbSet based API but it will be built over building block components that are easy to replace or extend as needed – the same pattern we’ve used for some of the isolated components we’ve added in recent EF releases.&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style="text-align: left;"&gt;
&lt;b&gt;INTRODUCING: The Future of .NET on the Server&lt;/b&gt;&amp;nbsp;&amp;nbsp;&lt;/h2&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="360" src="//channel9.msdn.com/Events/TechEd/NorthAmerica/2014/DEV-B385/player" width="640"&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;h2 style="text-align: left;"&gt;
&amp;nbsp;&lt;/h2&gt;
&lt;h2 style="text-align: left;"&gt;
Read More&lt;/h2&gt;
&lt;a href="https://github.com/aspnet/EntityFramework/wiki/What-is-EF7-all-about"&gt;https://github.com/aspnet/EntityFramework/wiki/What-is-EF7-all-about&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blogs.msdn.com/b/adonet/archive/2014/10/21/ef7-what-does-code-first-only-really-mean.aspx"&gt;http://blogs.msdn.com/b/adonet/archive/2014/10/21/ef7-what-does-code-first-only-really-mean.aspx&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blogs.msdn.com/b/adonet/archive/2014/05/19/ef7-new-platforms-new-data-stores.aspx"&gt;http://blogs.msdn.com/b/adonet/archive/2014/05/19/ef7-new-platforms-new-data-stores.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2015/02/entity-framework-7-ef7.html</link><author>noreply@blogger.com (Raju.M)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-3762996860585069313</guid><pubDate>Wed, 13 Aug 2014 15:20:00 +0000</pubDate><atom:updated>2020-07-18T15:37:52.559-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">MVC  5</category><title>How to create CAPTCHA in MVC 5</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
As a developer you probably aware of CAPTCHA, It is a type of challenge-response test used in computing to determine whether or not the user is human [&lt;a href="http://en.wikipedia.org/wiki/CAPTCHA" target="_blank"&gt;CAPTCHA&lt;/a&gt;] &lt;br /&gt;
In development time we want to implement some CAPTCHA functionalists in your website, Lets check How can we do that&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKnC_ScT9qlthdR9Zf5sqBLiGoT2J-F8_1Vl6OMhLrXoCo6l6hP7a4jPUlIewCIYW_uvuX25Ynj_siQ9ucoZLTD3qN60CHKYWm2XtI1QGnhzmbKIzz_6SE31dypcHmAF6XR_jo9eYCIfg/s1600/captcha.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKnC_ScT9qlthdR9Zf5sqBLiGoT2J-F8_1Vl6OMhLrXoCo6l6hP7a4jPUlIewCIYW_uvuX25Ynj_siQ9ucoZLTD3qN60CHKYWm2XtI1QGnhzmbKIzz_6SE31dypcHmAF6XR_jo9eYCIfg/s1600/captcha.PNG" height="584" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Basic idea is&lt;br /&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;Create a image with some letters&lt;/li&gt;
&lt;li&gt;Save that letters in session or cache&amp;nbsp; &lt;/li&gt;
&lt;li&gt;Display our image in web page with textbox&lt;/li&gt;
&lt;li&gt;Validate TextBox value and letter what we saved in session&lt;/li&gt;
&lt;/ol&gt;
Then How to create an Image?&lt;br /&gt;
&lt;br /&gt;
Function to create image &lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;pre class="csharp" name="code"&gt; 
        /// &amp;lt;summary&amp;gt;
        /// Create image Byte[]
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
        public byte[] DrawByte()
        {
            byte[] returnByte = { };
            Bitmap bitmapImage = new Bitmap(150, 30, PixelFormat.Format32bppArgb);

            //
            // Here we generate random string
            string key = getRandomString();
            
            //
            // key string adding to Session
            HttpContext.Current.Session.Add(SessionKey, key);

            //
            // Creating image with key
            using (Graphics g = Graphics.FromImage(bitmapImage))
            {
                g.SmoothingMode = SmoothingMode.HighQuality;
                Rectangle rect = new Rectangle(0, 0, 150, 30);
                HatchBrush hBrush = new HatchBrush(HatchStyle.SmallConfetti, Color.LightGray, Color.White);
                g.FillRectangle(hBrush, rect);
                hBrush = new HatchBrush(HatchStyle.LargeConfetti, Color.Red, Color.Black);
                float fontSize = 20;
                Font font = new Font(FontFamily.GenericSerif, fontSize, FontStyle.Strikeout);
                float x = 10;
                float y = 1;
                PointF fPoint = new PointF(x, y);
                g.DrawString(key, font, hBrush, fPoint);

                using (MemoryStream ms = new MemoryStream())
                {
                    bitmapImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                    returnByte = ms.ToArray();
                }
            }
            return returnByte;
        }

&lt;/pre&gt;
Now we can chck the function to create session value or random string

&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;        /// &amp;lt;summary&amp;gt;
        /// Generate random string value
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
        private string getRandomString() {

            string returnString = string.Empty;
            string letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

            Random rand = new Random();

            int length = rand.Next(5, 8);
            for (int i = 0; i &amp;lt; length; i++)
            {
                int pos = rand.Next(0, 62);
                returnString += letters[pos].ToString();
            }
            return returnString;
        }
&lt;/pre&gt;
Here I am usign one Controller to create Image.. check below for to see my Controller
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;namespace CaptchaMVC.Controllers
{
    public class CaptchaController : Controller
    {
        //
        // GET: /Captcha/
        public ActionResult Index()
        {
            CaptchaHelper captchaHelper = new CaptchaHelper();
            return File(captchaHelper.DrawByte(), "image/jpeg");
        }
 }
}
&lt;/pre&gt;
From the View you call 
&lt;br /&gt;
&lt;pre class="html" name="code"&gt;&amp;lt;div class="form-group"&amp;gt;
            &amp;lt;span class="control-label col-md-2"&amp;gt;&amp;lt;/span&amp;gt;
                &amp;lt;div class="col-md-10"&amp;gt;
                    &amp;lt;img src="@Url.Action("Index","Captcha")" alt="image" /&amp;gt;
                &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
&lt;/pre&gt;
I this example I created a Person Controller and displaying and validating captcha image when someone create a new person. Here I am not including everything but you can download and check the whole code
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;//
        // POST: /Person/Create
        [HttpPost]
        public ActionResult Create(PersonViewModel person)
        {
            try
            {
                CaptchaHelper captchaHelper = new CaptchaHelper();
                bool success = captchaHelper.Verify(person.Captcha);
                if (success)
                { 
                    //captcha success
                }

                // TODO: Add insert logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
&lt;/pre&gt;
-- Happy Coding--&lt;br /&gt;
&lt;a href="https://www.dropbox.com/s/illhgzot9sgqeav/CaptchaMVC.zip?dl=0" target="_blank"&gt;Download Sample&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2014/08/how-to-create-captcha-in-mvc-5.html</link><author>noreply@blogger.com (Raju.M)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKnC_ScT9qlthdR9Zf5sqBLiGoT2J-F8_1Vl6OMhLrXoCo6l6hP7a4jPUlIewCIYW_uvuX25Ynj_siQ9ucoZLTD3qN60CHKYWm2XtI1QGnhzmbKIzz_6SE31dypcHmAF6XR_jo9eYCIfg/s72-c/captcha.PNG" width="72"/><thr:total>2</thr:total><enclosure length="-1" type="application/json" url="https://www.dropbox.com/s/illhgzot9sgqeav/CaptchaMVC.zip?dl=0"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>As a developer you probably aware of CAPTCHA, It is a type of challenge-response test used in computing to determine whether or not the user is human [CAPTCHA] In development time we want to implement some CAPTCHA functionalists in your website, Lets check How can we do that Basic idea is Create a image with some letters Save that letters in session or cache&amp;nbsp; Display our image in web page with textbox Validate TextBox value and letter what we saved in session Then How to create an Image? Function to create image /// &amp;lt;summary&amp;gt; /// Create image Byte[] /// &amp;lt;/summary&amp;gt; /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt; public byte[] DrawByte() { byte[] returnByte = { }; Bitmap bitmapImage = new Bitmap(150, 30, PixelFormat.Format32bppArgb); // // Here we generate random string string key = getRandomString(); // // key string adding to Session HttpContext.Current.Session.Add(SessionKey, key); // // Creating image with key using (Graphics g = Graphics.FromImage(bitmapImage)) { g.SmoothingMode = SmoothingMode.HighQuality; Rectangle rect = new Rectangle(0, 0, 150, 30); HatchBrush hBrush = new HatchBrush(HatchStyle.SmallConfetti, Color.LightGray, Color.White); g.FillRectangle(hBrush, rect); hBrush = new HatchBrush(HatchStyle.LargeConfetti, Color.Red, Color.Black); float fontSize = 20; Font font = new Font(FontFamily.GenericSerif, fontSize, FontStyle.Strikeout); float x = 10; float y = 1; PointF fPoint = new PointF(x, y); g.DrawString(key, font, hBrush, fPoint); using (MemoryStream ms = new MemoryStream()) { bitmapImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); returnByte = ms.ToArray(); } } return returnByte; } Now we can chck the function to create session value or random string /// &amp;lt;summary&amp;gt; /// Generate random string value /// &amp;lt;/summary&amp;gt; /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt; private string getRandomString() { string returnString = string.Empty; string letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; Random rand = new Random(); int length = rand.Next(5, 8); for (int i = 0; i &amp;lt; length; i++) { int pos = rand.Next(0, 62); returnString += letters[pos].ToString(); } return returnString; } Here I am usign one Controller to create Image.. check below for to see my Controller namespace CaptchaMVC.Controllers { public class CaptchaController : Controller { // // GET: /Captcha/ public ActionResult Index() { CaptchaHelper captchaHelper = new CaptchaHelper(); return File(captchaHelper.DrawByte(), "image/jpeg"); } } } From the View you call &amp;lt;div class="form-group"&amp;gt; &amp;lt;span class="control-label col-md-2"&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;div class="col-md-10"&amp;gt; &amp;lt;img src="@Url.Action("Index","Captcha")" alt="image" /&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; I this example I created a Person Controller and displaying and validating captcha image when someone create a new person. Here I am not including everything but you can download and check the whole code // // POST: /Person/Create [HttpPost] public ActionResult Create(PersonViewModel person) { try { CaptchaHelper captchaHelper = new CaptchaHelper(); bool success = captchaHelper.Verify(person.Captcha); if (success) { //captcha success } // TODO: Add insert logic here return RedirectToAction("Index"); } catch { return View(); } } -- Happy Coding-- Download Sample OpenSource.Net</itunes:subtitle><itunes:author>noreply@blogger.com (Raju.M)</itunes:author><itunes:summary>As a developer you probably aware of CAPTCHA, It is a type of challenge-response test used in computing to determine whether or not the user is human [CAPTCHA] In development time we want to implement some CAPTCHA functionalists in your website, Lets check How can we do that Basic idea is Create a image with some letters Save that letters in session or cache&amp;nbsp; Display our image in web page with textbox Validate TextBox value and letter what we saved in session Then How to create an Image? Function to create image /// &amp;lt;summary&amp;gt; /// Create image Byte[] /// &amp;lt;/summary&amp;gt; /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt; public byte[] DrawByte() { byte[] returnByte = { }; Bitmap bitmapImage = new Bitmap(150, 30, PixelFormat.Format32bppArgb); // // Here we generate random string string key = getRandomString(); // // key string adding to Session HttpContext.Current.Session.Add(SessionKey, key); // // Creating image with key using (Graphics g = Graphics.FromImage(bitmapImage)) { g.SmoothingMode = SmoothingMode.HighQuality; Rectangle rect = new Rectangle(0, 0, 150, 30); HatchBrush hBrush = new HatchBrush(HatchStyle.SmallConfetti, Color.LightGray, Color.White); g.FillRectangle(hBrush, rect); hBrush = new HatchBrush(HatchStyle.LargeConfetti, Color.Red, Color.Black); float fontSize = 20; Font font = new Font(FontFamily.GenericSerif, fontSize, FontStyle.Strikeout); float x = 10; float y = 1; PointF fPoint = new PointF(x, y); g.DrawString(key, font, hBrush, fPoint); using (MemoryStream ms = new MemoryStream()) { bitmapImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); returnByte = ms.ToArray(); } } return returnByte; } Now we can chck the function to create session value or random string /// &amp;lt;summary&amp;gt; /// Generate random string value /// &amp;lt;/summary&amp;gt; /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt; private string getRandomString() { string returnString = string.Empty; string letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; Random rand = new Random(); int length = rand.Next(5, 8); for (int i = 0; i &amp;lt; length; i++) { int pos = rand.Next(0, 62); returnString += letters[pos].ToString(); } return returnString; } Here I am usign one Controller to create Image.. check below for to see my Controller namespace CaptchaMVC.Controllers { public class CaptchaController : Controller { // // GET: /Captcha/ public ActionResult Index() { CaptchaHelper captchaHelper = new CaptchaHelper(); return File(captchaHelper.DrawByte(), "image/jpeg"); } } } From the View you call &amp;lt;div class="form-group"&amp;gt; &amp;lt;span class="control-label col-md-2"&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;div class="col-md-10"&amp;gt; &amp;lt;img src="@Url.Action("Index","Captcha")" alt="image" /&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; I this example I created a Person Controller and displaying and validating captcha image when someone create a new person. Here I am not including everything but you can download and check the whole code // // POST: /Person/Create [HttpPost] public ActionResult Create(PersonViewModel person) { try { CaptchaHelper captchaHelper = new CaptchaHelper(); bool success = captchaHelper.Verify(person.Captcha); if (success) { //captcha success } // TODO: Add insert logic here return RedirectToAction("Index"); } catch { return View(); } } -- Happy Coding-- Download Sample OpenSource.Net</itunes:summary><itunes:keywords>ASP.NET, MVC  5</itunes:keywords></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-4728087506991972237</guid><pubDate>Tue, 12 Aug 2014 15:43:00 +0000</pubDate><atom:updated>2014-08-13T03:59:55.988-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">Entity Framework</category><category domain="http://www.blogger.com/atom/ns#">MVC</category><title>Paging In MVC 5 with Entity Framework </title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
How to do Paging in MVC

You can find lot of examples for paging in MVC with Entity Framework in internet. I am adding one more example. In this example you can see one partial page for paging control and ViewModel for called Pager.  Here I am using AdventureWorks database Employee table to page Empoyees

Following is ViewModel class,  data that you need to pass to the view. Class constructor have IQueryable&lt;t&gt; Datasource, It hold the data and return DataSource, TotalCount,PageSize currentpage and TotalPages.&amp;nbsp;&lt;/t&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzLwPUQc6b484bTSrTM4VY_jLQqDFL_5KccNkFny9N2EczvCyjvWdM_O091eXkDtKIxuy_u3c2-tcZc2qEuwvHwh_p-EOPCM5hdzeI2leGMbjs-0IbsKRuPNendl13yisuCt5h5kLbjQY/s1600/sample_page.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzLwPUQc6b484bTSrTM4VY_jLQqDFL_5KccNkFny9N2EczvCyjvWdM_O091eXkDtKIxuy_u3c2-tcZc2qEuwvHwh_p-EOPCM5hdzeI2leGMbjs-0IbsKRuPNendl13yisuCt5h5kLbjQY/s1600/sample_page.PNG" height="370" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;public class Pager&amp;lt;T&amp;gt;:List&amp;lt;T&amp;gt;
    {
        public int TotalPages { get; set; }
        public int CurrentPage { get; set; }
        public int PageSize { get; set; }
        public int TotalCount { get; set; }

        public Pager(IQueryable&amp;lt;T&amp;gt; dataSource, int pageIndex, int pageSize, int totalCount)
        {
            TotalCount = totalCount;
            CurrentPage = pageIndex;
            PageSize = pageSize;
            TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);
            this.AddRange(dataSource);
        }
    }
&lt;/pre&gt;
Model and DataContext class
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt; public partial class EmployeeContext : DbContext
    {
        public EmployeeContext()
            : base("name=AdventureWorksConnectionString")
        {
        }

        public virtual DbSet&amp;lt;DimEmployee&amp;gt; DimEmployees { get; set; }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
        }
    }
&lt;/pre&gt;
In Model class I am not included all the columns, Just added only columns I need.. 

&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;[Table("DimEmployee")]
    public partial class DimEmployee
    {
        [Key]
        public int EmployeeKey { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Title { get; set; }
        public string EmailAddress { get; set; }
        public string DepartmentName { get; set; }
    }
&lt;/pre&gt;
EmployeeContext class return Data from database, I already Installed Entity Framework from Package Manager, But in this example I am calling one stored procedure to get the data using EF. Its for I am not taking the whole data from database.. Just taking what I want to display. Here we need to pass the limit of data we want.

&lt;br /&gt;
&lt;pre class="sql" name="code"&gt;USE [AdventureWorksDW2008R2]
GO
/****** Object:  StoredProcedure [dbo].[getEmployeeByPageNumber]    Script Date: 08/12/2014 14:24:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:  &amp;lt;Raju Melveetilpurayil&amp;gt;
-- Create date: &amp;lt;Create Date,,&amp;gt;
-- Description: &amp;lt;Get rows by row between limit&amp;gt;
-- =============================================
ALTER PROCEDURE [dbo].[getEmployeeByPageNumber]
 -- Add the parameters for the stored procedure here
 @Start INT,
 @End INT,
 @TotalCount INT OUTPUT
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;
SELECT @TotalCount=COUNT(*) FROM dbo.DimEmployee
SELECT [EmployeeKey]
      ,[FirstName]
      ,[LastName]
      ,[Title]
      ,[EmailAddress]
      ,[DepartmentName] FROM 
(
 SELECT ROW_NUMBER() OVER(ORDER BY EmployeeKey) ROW_NUM, * FROM DimEmployee
 ) AS K
 WHERE ROW_NUM &amp;gt;@Start AND ROW_NUM &amp;lt;=@End
  
END

&lt;/pre&gt;
Now we can see our MVC pages. Here is a partial page it only meant to  display paging controls. The advantage of this control and model are generic, so we can pass any datasouce to do paging.
&lt;br /&gt;
&lt;pre class="html" name="code"&gt;&lt;ul class="pagination"&gt;
   @{
         double _pageCount = ((double)((Model.TotalCount-1) / Model.PageSize));
         int pageCount = _pageCount - (Math.Round(_pageCount)) != 0 ? (int)(_pageCount + 1) : (int)_pageCount;

         //
         // disable class for next and previous button if there is no previous and next
         string classNameForNext = Model.CurrentPage == _pageCount ? "disabled" : string.Empty;
         string classNameForPrevious = Model.CurrentPage == 1 ? "disabled" : string.Empty;
    }
&lt;li class="@classNameForPrevious"&gt;
        @if (classNameForPrevious == string.Empty){
         @Html.ActionLink("« Prev", "Index", new { page = (Model.CurrentPage - 1) })}
        else{
        &lt;a href="https://www.blogger.com/blogger.g?blogID=6236973097452836208#"&gt;« Prev&lt;/a&gt;}

    &lt;/li&gt;
@for (int pages = 1; pages &amp;lt;= pageCount; pages++)
    {
        //
        //adding active class to current page
        string active = "";
        if (pages == Model.CurrentPage) { active = "active"; }
&lt;li class="@active"&gt;@Html.ActionLink(pages.ToString(), "Index", new { page = pages })&lt;/li&gt;
}
&lt;li class="@classNameForNext"&gt;
        @if (classNameForNext == string.Empty){
            @Html.ActionLink("Next »", "Index", new { page = (Model.CurrentPage + 1) })}
        else{
           &lt;a href="https://www.blogger.com/blogger.g?blogID=6236973097452836208#"&gt;Next »&lt;/a&gt;
        }
    &lt;/li&gt;
&lt;/ul&gt;
&lt;/pre&gt;
&lt;br /&gt;
form the Index.cshtml we pass Model to the partial page. From the Model partial page read class properties TotalPage,CurrentPage.. 
and generate page numbers and next and previous buttons


Passing Model to partial Page
&lt;br /&gt;
&lt;pre class="html" name="code"&gt;&amp;lt;tr&amp;gt;
     &amp;lt;td colspan="5"&amp;gt;
        @Html.Partial("_PagingPartial",Model)
     &amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;&lt;/pre&gt;
Ok Now we can see the whole Index.cshtml

&lt;br /&gt;
&lt;pre class="html" name="code"&gt;@model EFMVCSample.ViewModel.Pager&amp;lt;EFMVCSample.Models.DimEmployee&amp;gt;
@{
    ViewBag.Title = "Employee";
}
&amp;lt;table class="table"&amp;gt;
         &amp;lt;tr&amp;gt;
            &amp;lt;th&amp;gt;FirstName&amp;lt;/th&amp;gt;
            &amp;lt;th&amp;gt;LastName&amp;lt;/th&amp;gt;
            &amp;lt;th&amp;gt;Title&amp;lt;/th&amp;gt;
            &amp;lt;th&amp;gt;EmailAddress&amp;lt;/th&amp;gt;
            &amp;lt;th&amp;gt;DepartmentName&amp;lt;/th&amp;gt;
        &amp;lt;/tr&amp;gt;
            @foreach (EFMVCSample.Models.DimEmployee employee in Model.AsQueryable().ToList())
            {
                &amp;lt;tr&amp;gt;
                    &amp;lt;td&amp;gt;@employee.FirstName&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;@employee.LastName&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;@employee.Title&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;@employee.EmailAddress&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;@employee.DepartmentName&amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
            }
    &amp;lt;tr&amp;gt;
        &amp;lt;td colspan="5"&amp;gt;
            @Html.Partial("_PagingPartial",Model)
        &amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;
&lt;/pre&gt;
So we can see PagingController to see how controller works
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;public class PagingController : Controller
    {
        private List&amp;lt;DimEmployee&amp;gt; AllEmpoyees { get; set; }

        //
        // GET: /Paging/
        public ActionResult Index(int? page)
        {
            int pageno = 0;
            pageno = page == null ? 1 : int.Parse(page.ToString());

            int pageSize = 15;
            int totalCount = 0;



            using (var db = new EmployeeContext())
            {
                int limitEnd = pageno * pageSize;
                int limitStart = limitEnd - pageSize;

                //
                //calling stored procedure to get the total result count

                var start = new SqlParameter("@Start", limitStart);
                var end = new SqlParameter("@End", limitEnd);

                //
                // setting stored procedure OUTPUT value
                // This return total number of rows, and avoid two database call for data and total number of rows 
                var spOutput = new SqlParameter
                {
                    ParameterName = "@TotalCount",
                    SqlDbType = System.Data.SqlDbType.BigInt,
                    Direction = System.Data.ParameterDirection.Output
                };

                //
                //calling stored procedure to get paged data.
                AllEmpoyees = db.Database.SqlQuery&amp;lt;DimEmployee&amp;gt;(
                                                "getEmployeeByPageNumber @Start,@End,@TotalCount out",
                                                start, end, spOutput)
                                                .ToList();

                //
                // setting total number of records
                totalCount = int.Parse(spOutput.Value.ToString());

            }
            Pager&amp;lt;DimEmployee&amp;gt; pager = new Pager&amp;lt;DimEmployee&amp;gt;(AllEmpoyees.AsQueryable(), pageno, pageSize, totalCount);
            return View(pager);

        }
 }
&lt;/pre&gt;
Depend on page number, Controller create pageno,pageSize and call stored procedure to get data between limit.

&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt; var spOutput = new SqlParameter
                {
                    ParameterName = "@TotalCount",
                    SqlDbType = System.Data.SqlDbType.BigInt,
                    Direction = System.Data.ParameterDirection.Output
                };

//
//calling stored procedure to get paged data.
AllEmpoyees = db.Database.SqlQuery&amp;lt;DimEmployee&amp;gt;("getEmployeeByPageNumber @Start,@End,@TotalCount out",start, end, spOutput).ToList();
&lt;/pre&gt;
&lt;/div&gt;
&lt;a href="https://dl.dropboxusercontent.com/u/39166555/EFMVCSample_Paging_sample.zip"&gt;Download example&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=3497545" rel="tag" style="display: inline;"&gt;CodeProject&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2014/08/paging-in-mvc-5-with-entity-framework.html</link><author>noreply@blogger.com (Raju.M)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzLwPUQc6b484bTSrTM4VY_jLQqDFL_5KccNkFny9N2EczvCyjvWdM_O091eXkDtKIxuy_u3c2-tcZc2qEuwvHwh_p-EOPCM5hdzeI2leGMbjs-0IbsKRuPNendl13yisuCt5h5kLbjQY/s72-c/sample_page.PNG" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-2255690240220206731</guid><pubDate>Sun, 10 Aug 2014 21:38:00 +0000</pubDate><atom:updated>2014-08-11T05:46:39.322-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">Entity Framework</category><category domain="http://www.blogger.com/atom/ns#">SQL Server</category><title>How to get stored procedure OUTPUT Parameters in Entity Framework</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Calling stored procedure from Entity framework code first is not an issue. Its explained very well in Entity Framework tutorials as well [&lt;a href="http://msdn.microsoft.com/en-gb/data/jj592907.aspx" target="_blank"&gt;Here&lt;/a&gt;] , Let see how to call custom stored procedure from C#&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is my stored procedure to return total number of employes from database&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="sql" name="code"&gt;USE [AdventureWorksDW2008R2]
GO
/****** Object:  StoredProcedure [dbo].[getEmployeeCount] 
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Raju Melveetilpurayil
-- Create date: 
-- Description: Get total number of employes from AdventureWorksDW2008R2 database
-- =============================================
ALTER PROCEDURE [dbo].[getEmployeeCount] 
AS
BEGIN
 SET NOCOUNT ON;

 SELECT COUNT(*)AS EmpCount FROM dbo.DimEmployee
END

--
--
&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
Now we can check how to call above stored procedure from C#&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;

using (var db = new EmployeeContext())
{
 var totalNumberOfEmployes = db.Database.SqlQuery&amp;lt;int&amp;gt;("getEmployeeCount").ToList();
 int totalNumber = totalNumberOfEmployes.FirstOrDefault&amp;lt;int&amp;gt;();
}  


&lt;/pre&gt;
So&amp;nbsp; we can call a stored procedure with some parameter including OUTPUT parameter&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="sql" name="code"&gt;USE [AdventureWorksDW2008R2]
GO
/****** Object:  StoredProcedure [dbo].[getEmployeeByPageNumber]    Script Date: 08/10/2014 22:25:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:  &amp;lt;Raju Melveetilpurayil&amp;gt;
-- Create date: &amp;lt;Create Date,,&amp;gt;
-- Description: &amp;lt;Get rows by row between limit&amp;gt;
-- =============================================
ALTER PROCEDURE [dbo].[getEmployeeByPageNumber]
 -- Add the parameters for the stored procedure here
 @Start INT,
 @End INT,
 @TotalCount INT OUTPUT
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;
SELECT @TotalCount=COUNT(*) FROM dbo.DimEmployee
SELECT [EmployeeKey]
      ,[FirstName]
      ,[LastName]
      ,[Title]
      ,[EmailAddress]
      ,[DepartmentName] FROM 
(
 SELECT ROW_NUMBER() OVER(ORDER BY EmployeeKey) ROW_NUM, * FROM DimEmployee
 ) AS K
 WHERE ROW_NUM &amp;gt;@Start AND ROW_NUM &amp;lt;=@End
  
--
--
END


&lt;/pre&gt;

Actually the above script I am using for to get data between some limit.. I will use this same script in my later articles for How to do paging in MVC 5 

We need to pass one SqlParameter parameter and set its direction to System.Data.ParameterDirection.Output, after executing the function  SqlParameter  hold the OUTPUT data.  
&lt;pre class='csharp' name='code'&gt;
var spOutput = new SqlParameter {
                    ParameterName = &amp;quot;@TotalCount&amp;quot;,
                    SqlDbType = System.Data.SqlDbType.BigInt,
                    Direction = System.Data.ParameterDirection.Output 
                };
&lt;/pre&gt;

we pass other parameter like normal  SqlParameter
&lt;pre class='csharp' name='code'&gt;
var start = new SqlParameter(&amp;quot;@Start&amp;quot;, limitStart);
var end = new SqlParameter(&amp;quot;@End&amp;quot;, limitEnd);
&lt;/pre&gt;

db.Database.SqlQuery help us to call raw Sql from entity framework

The whole code

&lt;pre class="csharp" name="code"&gt;
//
// calling stored procedure to get the total result count

var start = new SqlParameter(&amp;quot;@Start&amp;quot;, limitStart);
var end = new SqlParameter(&amp;quot;@End&amp;quot;, limitEnd);
               
//
// setting stored procedure OUTPUT value
// This return total number of rows, and avoid two database call for data and total number of rows 
var spOutput = new SqlParameter {
                    ParameterName = &amp;quot;@TotalCount&amp;quot;,
                    SqlDbType = System.Data.SqlDbType.BigInt,
                    Direction = System.Data.ParameterDirection.Output 
                };
//
//calling stored procedure to get paged data.
  List&amp;lt;DimEmployee&amp;gt; AllEmpoyees = db.Database.SqlQuery&amp;lt;DimEmployee&amp;gt;(
                               &amp;quot;getEmployeeByPageNumber @Start,@End,@TotalCount out&amp;quot;,
                                start, end, spOutput)
                                .ToList();
//
// setting total number of records
totalCount = int.Parse(spOutput.Value.ToString());


//
//
&lt;/pre&gt;
             

Happy programming ..   
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2014/08/how-to-get-stored-procedure-output.html</link><author>noreply@blogger.com (Raju.M)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-2793608182176513952</guid><pubDate>Sun, 27 Jul 2014 12:02:00 +0000</pubDate><atom:updated>2014-08-12T15:21:58.717-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">WebAPI 2</category><title>How to return JSON from WebAPI 2</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Nowadays JSON is more common than XML, Most of the JavaScript frameworks work well with JSON contents, AngularJS is an excellent example. Default WebAPI have&amp;nbsp;&amp;nbsp; IEnumerable&amp;lt;string&amp;gt;&amp;nbsp; Get() and string Get(int id) methods&lt;/string&gt;&lt;br /&gt;
&lt;br /&gt;
Take a look &lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;public class DefaultController : ApiController
    {
        // GET api/default2
        public IEnumerable&amp;lt;string&amp;gt; Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/default2/5
        public string Get(int id)
        {
            return "value";
        }

        // POST api/default2
        public void Post([FromBody]string value)
        {
        }

        // PUT api/default2/5
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/default2/5
        public void Delete(int id)
        {
        }
    }
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
If you wish to return a JSON instead of string from WebAPI 2 may face some issues, So How can it resolved?

You can return &lt;b&gt;HttpResponseMessage&lt;/b&gt; instead of string or IEnumerable&lt;string&gt;.. If you want to read more check this out &lt;a href="http://codebetter.com/glennblock/2012/05/24/two-ways-to-work-with-http-responses-in-apicontroller-httpresponsemessage-and-httpresponseexception/http://"&gt;Two ways to work with HTTP responses in ApiController&lt;/a&gt;


Below code will return JSON string for you
&lt;br /&gt;
&lt;/string&gt;&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;
       [Route("api/Default/GetProductLookup/{id}")]
        public HttpResponseMessage GetProductLookup(string id)
        {
            string json = "Your JSON String";
            var response = Request.CreateResponse(HttpStatusCode.OK);
            response.Content = new StringContent(json, Encoding.UTF8, "application/json");
            return response;
        }

&lt;/pre&gt;
Here is the whole class

&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;public class DefaultController : ApiController
    {
        // GET api/default2
        public IEnumerable&amp;lt;string&amp;gt; Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/default2/5
        public string Get(int id)
        {
            return "value";
        }

        [Route("api/Default/GetProductLookup/{id}")]
        public HttpResponseMessage GetProductLookup(string id)
        {
            string json = "Your JSON String";
            var response = Request.CreateResponse(HttpStatusCode.OK);
            response.Content = new StringContent(json, Encoding.UTF8, "application/json");
            return response;
        }

        // POST api/default2
        public void Post([FromBody]string value)
        {
        }

        // PUT api/default2/5
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/default2/5
        public void Delete(int id)
        {
        }
    }
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2014/07/how-to-return-json-from-webapi-2.html</link><author>noreply@blogger.com (Raju.M)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-6530650502461914745</guid><pubDate>Tue, 04 Mar 2014 01:52:00 +0000</pubDate><atom:updated>2014-03-03T18:04:25.586-08:00</atom:updated><title>How to Add Json MIME type in IIS 7.5</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Today .NET Web Development and Tools group at Microsoft released Customer Tech Preview (CTP2) release of Visual Studio 2013 Update 2 contains a new JSON editor. "&lt;a href="http://blogs.msdn.com/b/webdev/archive/2014/02/28/new-json-editor-features-in-visual-studio-2013-update-2-ctp2.aspx" target="_blank"&gt;New JSON editor features in Visual Studio 2013 Update 2 CTP2&lt;/a&gt;"&lt;br /&gt;
&lt;br /&gt;
So I Installed CTP2 updated for my visual studio 2013 to see how JSON template works and all.&lt;br /&gt;
&lt;pre class="json" name="code"&gt;{
   "Person":[
      {
         "FirstName":"Raju",
         "LastName":"Melveetilpurayil",
         "Languages":[
            {
               "id":"1",
               "name":"C#"
            },
            {
               "id":"2",
               "name":"Javascript"
            },
            {
               "id":"3",
               "name":"C++"
            }
         ]
      }
   ]
}
&lt;/pre&gt;

&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5MUxg-O2ZLX5yBvgU7gVlwQVzi2DjXEMW1PRRgPlWdcl326T2ChMMZpG2Y8Bq7DRFo-V8NkGKMlEdRBFFoX2cRx_hrfHPUdIgkVBw7PJnZPL_ihfC2VBsQPKI-4v-Yq-rMFbFkfj-ziM/s1600/simple.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
It was ok. but when I tried to read my json file from browser (localhost url)&amp;nbsp; I am started getting some some errors, I knew I got one exception because last day I got my laptop after repair, everything is new and ready for first run, I do not installed IIS on&amp;nbsp; my machine.&lt;br /&gt;
&lt;br /&gt;
This was the exception&amp;nbsp; &lt;br /&gt;
&lt;b&gt;HTTP Error 404.3 - Not Found
The page you are requesting cannot be served because of the extension configuration&lt;/b&gt;. If the page is a script, add a handler. If the file should be downloaded, add a MIME map.&amp;nbsp; Installed IIS 7.5 and Added MIME type for JSON, default there is no JOSN type in IIS 7.5&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style="font-size: 18px; font-weight: bold;"&gt;
How To Add MIME Type In IIS 7.5&lt;/h2&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
1: Open IIS&amp;nbsp; Manager [ in RUN&amp;nbsp; type inetmgr] press Enter&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFCAu9SNkYl3Yo0zNuQSXeCCa16WXLI97IBTRJJuQgLVaYzWmQT6Ry5w1S16GYNZw-01M5erBXjhJFOrcatsQAJXqzNhOSLb133CM1Nh0sKQ-DwXDxRUEAxgMhKpxkWG-GT9Ozsy-iLLk/s1600/run.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFCAu9SNkYl3Yo0zNuQSXeCCa16WXLI97IBTRJJuQgLVaYzWmQT6Ry5w1S16GYNZw-01M5erBXjhJFOrcatsQAJXqzNhOSLb133CM1Nh0sKQ-DwXDxRUEAxgMhKpxkWG-GT9Ozsy-iLLk/s1600/run.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
2: Click on MIME Types&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_sFJXRPzwMazOoBN7fTm0lC_k8HH0SP6vUPXxdPMNTuy2WV5OGeoUFqCOt9ZYks-7HFdaUpcY6VcZTsQzJG-zCciXLIgvmRXxYHOEGisJkSHcCtFtg37WVjQG_DJ5SnUwv53-OW87PnM/s1600/issmgr.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_sFJXRPzwMazOoBN7fTm0lC_k8HH0SP6vUPXxdPMNTuy2WV5OGeoUFqCOt9ZYks-7HFdaUpcY6VcZTsQzJG-zCciXLIgvmRXxYHOEGisJkSHcCtFtg37WVjQG_DJ5SnUwv53-OW87PnM/s1600/issmgr.PNG" height="392" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
3: Right click and Select Add&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj5_bJDJQcWuJyyQDbUzB3J1UtvUDTGGTQFQ2ru-j9rRBhd3qKrNfrgCSWZDQ7NApBUag3Jt8OkwVcpEv9uL26aAxUbuZ_MBqXkNC03y-DnT7e7jJvXf0d0fmcx9nEJs9HepsaKlV0qsI/s1600/iss.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj5_bJDJQcWuJyyQDbUzB3J1UtvUDTGGTQFQ2ru-j9rRBhd3qKrNfrgCSWZDQ7NApBUag3Jt8OkwVcpEv9uL26aAxUbuZ_MBqXkNC03y-DnT7e7jJvXf0d0fmcx9nEJs9HepsaKlV0qsI/s1600/iss.PNG" height="336" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
DONE, You added MIME type for JSON in IIS.&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
I ran my JSON file again and still got some other exceptions.&amp;nbsp; I started goggling, finally I found &lt;a href='http://stackoverflow.com/questions/17626776/why-is-my-json-file-not-found/17631046#17631046'&gt;Solution&lt;/a&gt; that we need to give to run JSON &lt;br /&gt;
To allow the IIS to serve JSON files, your need to add some configuration in web.config:
&lt;/div&gt;
&lt;pre class="brush: php; highlight: [5, 15]; html-script: true"&gt;
&amp;lt;system.webServer&amp;gt;
      &amp;lt;staticContent&amp;gt;
        &amp;lt;mimeMap fileExtension=&amp;quot;.json&amp;quot; mimeType=&amp;quot;application/json&amp;quot; /&amp;gt;
      &amp;lt;/staticContent&amp;gt;
&amp;lt;/system.webServer&amp;gt;
&lt;/pre&gt;
&lt;pre class="code" name="xml"&gt;
&lt;system.webServer&gt;
      &lt;staticContent&gt;
        &lt;mimeMap fileExtension=".json" mimeType="application/json" /&gt;
      &lt;/staticContent&gt;
&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2014/03/how-to-add-json-mime-type-in-iis-75.html</link><author>noreply@blogger.com (Raju.M)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFCAu9SNkYl3Yo0zNuQSXeCCa16WXLI97IBTRJJuQgLVaYzWmQT6Ry5w1S16GYNZw-01M5erBXjhJFOrcatsQAJXqzNhOSLb133CM1Nh0sKQ-DwXDxRUEAxgMhKpxkWG-GT9Ozsy-iLLk/s72-c/run.PNG" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-5754947980974349008</guid><pubDate>Wed, 15 Aug 2012 23:50:00 +0000</pubDate><atom:updated>2012-08-15T16:50:09.644-07:00</atom:updated><title>Visual Studio 2012 and .NET Framework 4.5 is Released </title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Microsoft announced the&amp;nbsp; availability of &lt;b&gt;Microsoft .NET Framework 4.5 and Visual Studio 2012&lt;/b&gt; today.&lt;a href="http://blogs.msdn.com/b/dotnet/archive/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code.aspx"&gt;http://blogs.msdn.com/b/dotnet/archive/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code.aspx&lt;/a&gt;&lt;br /&gt;
You can &lt;b&gt;download Visual Studio 2012&lt;/b&gt; from &lt;a href="http://www.microsoft.com/visualstudio/11/en-us"&gt;http://www.microsoft.com/visualstudio/11/en-us&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
and take a look on &lt;b&gt;Whats new in Framework 4.5&lt;/b&gt; &lt;a href="http://msdn.microsoft.com/library/ms171868(v=vs.110).aspx"&gt;http://msdn.microsoft.com/library/ms171868(v=vs.110).aspx&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;What's New in ASP.NET 4.5 and Visual Studio 2012&lt;/b&gt; &lt;a href="http://www.asp.net/vnext/overview/whitepapers/whats-new"&gt;http://www.asp.net/vnext/overview/whitepapers/whats-new&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;Learn&lt;/b&gt; &lt;b&gt;What's New By Tutorial Visual Studio 2012&lt;/b&gt; &lt;a href="http://msdn.microsoft.com/en-US/library/hh420390.aspx#whatsnew_scenario"&gt;http://msdn.microsoft.com/en-US/library/hh420390.aspx#whatsnew_scenario&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;Reference Source Code Center&lt;/b&gt; [RSCC]&amp;nbsp; &lt;a href="http://referencesource.microsoft.com/"&gt;http://referencesource.microsoft.com/&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;Releasing the source code for the .NET Framework 4.5 libraries&lt;/b&gt; &lt;a href="http://referencesource.microsoft.com/netframework.aspx"&gt;http://referencesource.microsoft.com/netframework.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2012/08/visual-studio-2012-and-net-framework-45.html</link><author>noreply@blogger.com (Raju.M)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-3495257623668434349</guid><pubDate>Mon, 13 Aug 2012 00:05:00 +0000</pubDate><atom:updated>2012-08-12T17:08:08.351-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">C#.Net</category><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><title>Decimal to fraction convertion c#</title><description>I think there is nothing to explain below code. I used this code snippet to calculate the fractional value of a decimal number. Might help someone.

&lt;pre class="csharp" name="code"&gt;
        /// &lt;summary&gt;
        ///  return fraction from decimal value
        /// &lt;/summary&gt;
        /// &lt;param name="decimalvalue"&gt;&lt;/param&gt;
        /// &lt;returns&gt;string&lt;/returns&gt;
        /// 
        /*
         * logic:
         * x=5.333
         * 10x=53.33
         * 10x-x=Math.Round(53.33-5.333)
         * 9x=48
         * x=48/9
         * find common factor
         * divide both side by commen factor [ nuerator and denominator]
         * return faction
         * */
 public string DecimalToFraction(decimal decimalvalue)
        {
            decimal decimalTemp = decimalvalue;
            string returnDecimalvalue = string.Empty;
            decimal temp = decimalTemp * 10;
            decimal numerator = System.Decimal.Round(temp - decimalTemp);
            decimal denominator = 10 - 1;

            int comFact = getCommonFactor((int)numerator, (int)denominator);
            returnDecimalvalue = (numerator / comFact).ToString() + "/" + (denominator / comFact).ToString();
            return returnDecimalvalue;
        }


 
&lt;/pre&gt;
function to find the common factor
&lt;pre class="csharp" name="code"&gt;
private int getCommonFactor(int a, int b)
        {
            int count;
            while (b != 0)
            {
                count = a % b;
                a = b;
                b = count;
            }
            return a;
        }
&lt;/pre&gt;


Thanks.&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2012/08/decimal-to-fraction-convertion-c.html</link><author>noreply@blogger.com (Raju.M)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-4604820979744936328</guid><pubDate>Tue, 29 Nov 2011 02:46:00 +0000</pubDate><atom:updated>2011-11-28T19:38:23.116-08:00</atom:updated><title>Unlimited Scroll in ASP.Net DataList Control</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Unlimited scroll is not a big deal, for example facebook news feed its scroll when user reach bottom of the page.
Actually client side script check the scroll position  the container, if the position is in bottom, the scripts request content form server and update the container. In here the container is a DIV tag, named holder, and put some style tag height, width and overflow.holder is hold the DataList&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;CSS for the holder.
&lt;/b&gt;&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&lt;style type="text/css"&gt;
    #holder {width: 1900px; height:200px;overflow:auto;  }
&lt;/style&gt;
&lt;/pre&gt;
Here I used Northwind database Products Table to demonstrate the unlimited scroll in this&amp;nbsp; article and used a Handler page, First time page loads with 10 records in DataList, take a look below.
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;        if (!IsPostBack)
        {
            DataClass data = new DataClass();
            DataList1.DataSource = data.FirstTenRecords();
            DataList1.DataBind();
        }
&lt;/pre&gt;
And in client side I set current item count to 10 and next item count to 0. 
&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;var current=10;
var next=0;
&lt;/pre&gt;
and call function for load next form javascript, it’s nothing but calling server via AJAX, ie requesting Handler page with a query string of start and next. below&amp;nbsp; image shows how the request url form client, I used firebug to show requests &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc-wkS8vdFODtlrI4F_BisFdsvcFKkBAHL7e_VsPjd2MdCygg8ZyyhySp7zSKRrMRtfyXAFMOerOTANBI1dmNRXjuSA_r5cJipQuBt69Sj_-s09wL6mwxK4nAXDgQwIWY_vME_Sy5HU5Q/s1600/unlimitedscroll.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc-wkS8vdFODtlrI4F_BisFdsvcFKkBAHL7e_VsPjd2MdCygg8ZyyhySp7zSKRrMRtfyXAFMOerOTANBI1dmNRXjuSA_r5cJipQuBt69Sj_-s09wL6mwxK4nAXDgQwIWY_vME_Sy5HU5Q/s1600/unlimitedscroll.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;
lets look on &lt;b&gt;loadNext&lt;/b&gt;
&lt;br /&gt;
&lt;pre class="xml" name="code"&gt; var loadNext = function () {
            next = current + 10;
            $.ajax({
                url: "Handler.ashx?start=" + current + "&amp;amp;next=" + next,
                success: function (data) {
                    $("#DataList1").append(data);
                }
            });
            current = current + 10;
        };
&lt;/pre&gt;
Before calling the Handler page set next, after set current to current+10
&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;  next = current + 10;
  current = current + 10;
&lt;/pre&gt;
To get the data from a specific row number I used a stored procedure, it will return my data, I want to send number of position, if I send start=10&amp;amp;next=20, It will return 10th to 20th row form the database.

&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;USE [Northwind]
GO
/****** Object:  StoredProcedure [dbo].[ProductPages]    Script Date: 11/28/2011 12:03:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[ProductPages]
(
 @start int,
 @next int
) 
AS
BEGIN
SELECT ProductID,ProductName,UnitPrice FROM
(
   SELECT ROW_NUMBER() OVER(ORDER BY ProductID,ProductName,UnitPrice) NUM,
   * FROM Products
) A 
WHERE NUM &amp;gt;@start AND NUM &amp;lt;=@next
END
&lt;/pre&gt;
Now let take a look on how its work. everything works depends on holders scroll function. script check the scroll position of the container is bottom or not, if it on bottom, function call loadNext().

&lt;br /&gt;
&lt;pre class="xml" name="code"&gt; $(document).ready(function () {
            $("#holder").scroll(function () {
                if ($(this)[0].scrollHeight - $(this).scrollTop() == $(this).outerHeight()) {
                    loadNext();
                }
            });
        });
&lt;/pre&gt;
Handler page is nothing, like a aspx page.Its call a class file DataClass, DataClass is simple class file to reduce bulky code in Handler page. It call the DataLayer and return the data from database, after do some format to fill on the DataList and write it on response.
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;public void ProcessRequest(HttpContext context)
    {
        string startQstring = context.Request.QueryString["start"];
        string nextQstring = context.Request.QueryString["next"];
        //null check
        if ((!string.IsNullOrWhiteSpace(startQstring)) &amp;amp;&amp;amp; (!string.IsNullOrWhiteSpace(nextQstring)))
        {
            //convert string to int
            int start = Convert.ToInt32(startQstring);
            int next = Convert.ToInt32(nextQstring);
            
            //setting content type
            context.Response.ContentType = "text/plain";
            DataClass data = new DataClass();
            //writing response
            context.Response.Write(data.GetAjaxContent(start, next));
        }
    }
&lt;/pre&gt;
There is only one class file. But I put there class on that file.&lt;br /&gt;
1:&lt;b&gt;DataClass 
 &lt;/b&gt;:&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Contain two function On handler page we are calling first function GetAjaxContent(start,end) it retrun the records from database.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;2nd function loaad data on Page_Load even
 &lt;/li&gt;
&lt;/ul&gt;
2: &lt;b&gt;Provide :
 &lt;/b&gt;Provide SqlConnection from web.config&lt;br /&gt;
3:&lt;b&gt;DBHelper &lt;/b&gt;: Data layer

Take a look &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

/// &lt;summary&gt;
/// Summary description for DataClass
/// &lt;/summary&gt;
/// 


public class DataClass
{
    public DataClass()
    {
    }
    /// &lt;summary&gt;
    ///  return rows depend on position
    ///  if you need 10th to 20th you need to pass start=10 and end=20
    /// &lt;/summary&gt;
    /// &lt;param name="start" /&gt;
database start position of one row
    /// &lt;param name="next" /&gt;
database end position of one row
    /// &lt;returns&gt;&lt;/returns&gt;
    public string GetAjaxContent(int start, int end)
    {
        string result = string.Empty;
        //adding sp params with values in Dictionary entry.
        Dictionary&lt;string, object=""&gt; keyValPair = new Dictionary&lt;string, object=""&gt;();
        keyValPair.Add("@start", start);
        keyValPair.Add("@next", end);

        DBHelper DBHelper = new DBHelper();
        //passing the Stored Procedure name and keyvalue pair
        DataTable dataTable = DBHelper.GetTable("ProductPages", keyValPair);
        if (dataTable.Rows.Count &amp;gt; 0)
        {
            for (int i = 0; i &amp;lt; dataTable.Rows.Count; i++)
            {
                result += string.Format(@"
                                                        
                                                            &lt;table&gt;
                                                                &lt;tbody&gt;
&lt;tr&gt;
                                                                    &lt;td style="width: 50px;"&gt;{0}&lt;/td&gt;&lt;td style="width: 400px;"&gt;{1}&lt;/td&gt;&lt;td style="width: 150px;"&gt;{2}&lt;/td&gt;
                                                                &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
", dataTable.Rows[i][0].ToString(), dataTable.Rows[i][1].ToString(), dataTable.Rows[i][2].ToString());
            }

        }
        //this string is going to append on Datalist on client.
        return result;
    }
    /// &lt;summary&gt;
    /// function to bind data on page load
    /// &lt;/summary&gt;
    /// &lt;returns&gt;&lt;/returns&gt;
    public DataTable FirstTenRecords()
    {
        Dictionary&lt;string, object=""&gt; keyValPair = new Dictionary&lt;string, object=""&gt;();
        keyValPair.Add("@start", 0);
        keyValPair.Add("@next", 10);

        DBHelper DBHelper = new DBHelper();
        DataTable dataTable = DBHelper.GetTable("ProductPages", keyValPair);
        return dataTable;
    }
}

/// &lt;summary&gt;
/// return sqlconnection string formweb.config file
/// &lt;/summary&gt;
public class Provider
{
    public static SqlConnection GetConnection()
    {
        return new SqlConnection(ConfigurationManager.AppSettings["SqlConnectionString"]);
    }
}
/// &lt;summary&gt;
/// Data layer
/// &lt;/summary&gt;
public class DBHelper
{
    public DBHelper()
    { }

    SqlConnection con;
    SqlCommand cmd;
    SqlDataAdapter adapter;
    public DataTable GetTable(string SPName, Dictionary&lt;string, object=""&gt; SPParamWithValues)
    {
        DataTable dataTable = new DataTable();
        try
        {
            con = Provider.GetConnection();
            //open DB connection
            con.Open();
            cmd = new SqlCommand();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = con;
            cmd.CommandText = SPName;
            foreach (KeyValuePair&lt;string, object=""&gt; paramValue in SPParamWithValues)
            {
                cmd.Parameters.AddWithValue(paramValue.Key, paramValue.Value);
            }
            adapter = new SqlDataAdapter(cmd);
            adapter.Fill(dataTable);
        }
        finally
        {
            //close connection string
            con.Close();
        }
        return dataTable;
    }
}
&lt;/string,&gt;&lt;/string,&gt;&lt;/string,&gt;&lt;/string,&gt;&lt;/string,&gt;&lt;/string,&gt;&lt;/pre&gt;
If it not display properly please use the images
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXITZzyy5Pt0OGfO9LcOfbwblN6B2ixclQZGLaOJlnJCsYzDvZEvi_u56m9tJzgPi1JnnQ3ow9hkyhR4ZkjYoucMfuBM7oQ0yQZpydotoS0X0rpCAluIMNdS_1w-GGy11JHVtB0wduTGo/s1600/dataclass.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXITZzyy5Pt0OGfO9LcOfbwblN6B2ixclQZGLaOJlnJCsYzDvZEvi_u56m9tJzgPi1JnnQ3ow9hkyhR4ZkjYoucMfuBM7oQ0yQZpydotoS0X0rpCAluIMNdS_1w-GGy11JHVtB0wduTGo/s1600/dataclass.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxBkEoLCZskaiuUMXeArwMFLr_lhhSGvZ6fp8Kmg-1hN6c3-wfQH8purLL1WGJJZ6XL3Bvz8jRit7jx55VxlxhoCxGhOXO1ZSBF496GJ6Ie3kG62lPOI7i0ujK7fz0iDfNJswN1VCtz0g/s1600/DBlayer.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxBkEoLCZskaiuUMXeArwMFLr_lhhSGvZ6fp8Kmg-1hN6c3-wfQH8purLL1WGJJZ6XL3Bvz8jRit7jx55VxlxhoCxGhOXO1ZSBF496GJ6Ie3kG62lPOI7i0ujK7fz0iDfNJswN1VCtz0g/s1600/DBlayer.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje3dw6ybb600TovKhbF4TVDRxEQ4E47WYr-vix7kluCIOvFfPAAwW8yvtEBWJXPQmHJ56ZunSn8yD7_LygloDjH7zVYzwZfWwNJPW5pDjy0774PhKCTrfQNvWz6WYEboqtWtME1q-2V5E/s1600/provide.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje3dw6ybb600TovKhbF4TVDRxEQ4E47WYr-vix7kluCIOvFfPAAwW8yvtEBWJXPQmHJ56ZunSn8yD7_LygloDjH7zVYzwZfWwNJPW5pDjy0774PhKCTrfQNvWz6WYEboqtWtME1q-2V5E/s1600/provide.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://www.mediafire.com/download.php?foylq96zbahn5zd" target="_blank"&gt;Download Source&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=126421"&gt;Download full source code&lt;/a&gt; 
&lt;a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=3497545" rel="tag" style="display: none;"&gt;CodeProject&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2011/11/unlimited-scroll-in-aspnet-datalist.html</link><author>noreply@blogger.com (Raju.M)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc-wkS8vdFODtlrI4F_BisFdsvcFKkBAHL7e_VsPjd2MdCygg8ZyyhySp7zSKRrMRtfyXAFMOerOTANBI1dmNRXjuSA_r5cJipQuBt69Sj_-s09wL6mwxK4nAXDgQwIWY_vME_Sy5HU5Q/s72-c/unlimitedscroll.PNG" width="72"/><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-4044872168529707124</guid><pubDate>Fri, 30 Sep 2011 11:16:00 +0000</pubDate><atom:updated>2011-09-30T07:23:48.485-07:00</atom:updated><title>Download  Microsoft® Visual Studio® 11 Developer Preview</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;Overview
&lt;/b&gt;&lt;br /&gt;
Visual Studio 11 Developer Preview is an integrated development environment that seamlessly spans the entire life cycle of software creation, including architecture, user interface design, code creation, code insight and analysis, code deployment, testing, and validation. This release adds support for the most advanced Microsoft platforms, including the next version of Windows (code-named "Windows 8") and Windows Azure, and enables you to target platforms across devices, services, and the cloud. Integration with Team Foundation Server allows the entire team, from the customer to the developer, to build scalable and high-quality applications to exacting standards and requirements.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Visual Studio 11 Developer Preview is prerelease software and should not be used in production scenarios.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This preview enables you to test updates and improvements made since Visual Studio 2010, including the following:&lt;br /&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;

    Support for the most advanced platforms from Microsoft, including Windows 8 and Windows Azure, as well as a host of language enhancements.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;    New features such as code clone detection, code review workflow, enhanced unit testing, lightweight requirements, production intelliTrace™, exploratory testing, and fast context switching.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrw-hOMhrtXEbOKs-FbS1zCX0nYjj30QiDwiMFaWxVcnh4dgrV6rCUqBbuk0XPyQjnaUD1ui8auoiIP2gbvwuQrfgrPC5rswbWTeYe7S4EXHgDxRabJEBtcC7mrMLP4Zsx5qnOmLysVMY/s1600/framework+support.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrw-hOMhrtXEbOKs-FbS1zCX0nYjj30QiDwiMFaWxVcnh4dgrV6rCUqBbuk0XPyQjnaUD1ui8auoiIP2gbvwuQrfgrPC5rswbWTeYe7S4EXHgDxRabJEBtcC7mrMLP4Zsx5qnOmLysVMY/s320/framework+support.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;/ul&gt;
&lt;br /&gt;
This preview can be installed to run side by side with an existing Visual Studio 2010 installation. The preview provides an opportunity for developers to use the software and provide feedback before the final release. To provide feedback, please visit the Microsoft Connect website.&lt;br /&gt;
&lt;br /&gt;
The .NET Framework 4.5 Developer Preview is also installed as part of Visual Studio 11 Developer Preview.&lt;br /&gt;
&lt;br /&gt;
Note: This prerelease software will expire on June 30, 2012. To continue using Visual Studio 11 after that date, you will have to install a later version of the software.&lt;br /&gt;
&lt;br /&gt;
In order to develop Metro style applications, the Visual Studio 11 Developer Preview must be installed on the &lt;a href="http://msdn.microsoft.com/en-us/windows/apps/br229516"&gt;Windows Developer Preview with developer tools English, 64-bit&lt;/a&gt;. Developing Metro style applications on other Preview versions of Windows 8 is not supported.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHSBPg0i2sQjdeW53OooAwWRxKsd1OIXyU82kggJDj4zH1JS_vOorKxkmblZc1LdEeSomytvQBDTUdlzyOYOr_x1evBwc6mvDDhP65xHVpsnnslakK0YMoexOk_hR9SOjUHSRmoFbI8z8/s1600/startupscreen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHSBPg0i2sQjdeW53OooAwWRxKsd1OIXyU82kggJDj4zH1JS_vOorKxkmblZc1LdEeSomytvQBDTUdlzyOYOr_x1evBwc6mvDDhP65xHVpsnnslakK0YMoexOk_hR9SOjUHSRmoFbI8z8/s320/startupscreen.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2 id="system-requirements"&gt;

System requirements&lt;/h2&gt;
&lt;b&gt;Supported Operating Systems:&lt;/b&gt; Windows 7, Windows Server 2008 R2&lt;br /&gt;
&lt;ul&gt;&lt;ul&gt;
&lt;li&gt;Windows 7 (x86 and x64)&lt;/li&gt;
&lt;li&gt;Windows 8 (x86 and x64)&lt;/li&gt;
&lt;li&gt;Windows Server 2008 R2 (x64) &lt;/li&gt;
&lt;li&gt;Windows Server Developer Preview (x64)&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;Supported Architectures:&lt;/b&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;32-bit (x86)&lt;/li&gt;
&lt;li&gt;64-bit (x64) &lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;Hardware Requirements:&lt;/b&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;1.6 GHz or faster processor&lt;/li&gt;
&lt;li&gt;1 GB of RAM (1.5 GB if running on a virtual machine)&lt;/li&gt;
&lt;li&gt;5.5 GB of available hard disk space&lt;/li&gt;
&lt;li&gt;5400 RPM hard drive&lt;/li&gt;
&lt;li&gt;DirectX 9-capable video card running at 1024 x 768 or higher display resolution&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;a href="http://www.asp.net/vnext/whats-new"&gt;What is new in VS2011&lt;/a&gt; &lt;br /&gt;
&lt;ul&gt;&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
Source &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=27543"&gt;Download&amp;nbsp; Microsoft® Visual Studio® 11 Developer Preview &lt;/a&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2011/09/microsoft-visual-studio-11-developer.html</link><author>noreply@blogger.com (Raju.M)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrw-hOMhrtXEbOKs-FbS1zCX0nYjj30QiDwiMFaWxVcnh4dgrV6rCUqBbuk0XPyQjnaUD1ui8auoiIP2gbvwuQrfgrPC5rswbWTeYe7S4EXHgDxRabJEBtcC7mrMLP4Zsx5qnOmLysVMY/s72-c/framework+support.PNG" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-2601033414346022064</guid><pubDate>Tue, 30 Aug 2011 09:45:00 +0000</pubDate><atom:updated>2011-08-30T02:46:21.210-07:00</atom:updated><title>Download Microsoft Visual Studio 2010 SP1</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;b&gt;MIcrosoft Visual Studio 2010 SP1 RTM&lt;/b&gt;&lt;br /&gt;
Microsoft released Microsoft Visual Studio 2010 SP1 RTM for all vs2010 products to developers.&lt;br /&gt;
&lt;a href="http://go.microsoft.com/fwlink/?LinkId=209902"&gt;Online Installer&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://go.microsoft.com/fwlink/?LinkId=210710"&gt;Offline Installer&lt;/a&gt; &lt;br /&gt;
Offline Installer is an .ISO file. You can use daemon tools [download from &lt;a href="http://www.daemon-tools.cc/eng/downloads/"&gt;here&lt;/a&gt;] to create virtual IDE devices.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2011/08/download-microsoft-visual-studio-2010.html</link><author>noreply@blogger.com (Raju.M)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-5173199636992377956</guid><pubDate>Wed, 02 Feb 2011 01:04:00 +0000</pubDate><atom:updated>2011-02-01T17:14:01.682-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">AJAX</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><title>Checking Username Availability using ASP.net AJAX</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Checking username in user registration page is common thing in these days. Now we can check how to this using AJAX., ie Check username availability without postback. To achieve this you need to know about Ajax. Ajax is Asynchronous JavaScript and XML.  AJAX is the art of exchanging data with a server, and update parts of a web page - without reloading the whole page &lt;a href="http://www.w3schools.com/ajax/default.asp"&gt;[more]&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;
Here I use two Class files and one Generic handler page to simplify code.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1: AjaxHelper&lt;br /&gt;
2: DataBaseHelper&lt;br /&gt;
3: Handler.ashx&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Do not get confused, Client side javascript communicating sever with the help of Handler file, ie we send request to handler file, In the Handler file we create one instance of  &lt;b&gt;AjaxHelper Class &lt;/b&gt; and communicate with database with the help of &lt;b&gt;DataBaseHelper Class &lt;/b&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First we can check the sample images&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyrou7-XoOIurSjb-WIjxmqADHIouLMlaffUBWrrMV_vP6yPMSNu3l5fqhL4cLS3d1O8lW_unoHkGe98j5it_kemKZE8_xQALB1m9-eTwBQdAwnW4wl9yG2kEJM_p47Ld535FokVgfALQ/s1600/availlllllllllllll.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyrou7-XoOIurSjb-WIjxmqADHIouLMlaffUBWrrMV_vP6yPMSNu3l5fqhL4cLS3d1O8lW_unoHkGe98j5it_kemKZE8_xQALB1m9-eTwBQdAwnW4wl9yG2kEJM_p47Ld535FokVgfALQ/s1600/availlllllllllllll.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiswwinrUTq3DdydwtmdmZVHuzlZvB5gkyisePG_a3hQz6XqdO_yx8E6n2e9tlZX7yUKP61lSS4xOiZHOnbb9WPfnHMSKgEiaRw65CUgFbZeEF5nkhiWuQfzu_lH0mhTVzbrJoxxYuFU1c/s1600/notav.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiswwinrUTq3DdydwtmdmZVHuzlZvB5gkyisePG_a3hQz6XqdO_yx8E6n2e9tlZX7yUKP61lSS4xOiZHOnbb9WPfnHMSKgEiaRw65CUgFbZeEF5nkhiWuQfzu_lH0mhTVzbrJoxxYuFU1c/s1600/notav.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
User in Database&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1z1YvbZ2YlIrzCy4kIjGRxvxzTVL3GWj21p7jgRxmxlF6Q1Hxbc5MMlbfRoV12MAg77u5AYti1803GIKicvBEuddsNGHF3yK1jjUTpDXDIHnifZ_HmXNO-zRf1se4fyIt-W97GAAVu1s/s1600/table.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1z1YvbZ2YlIrzCy4kIjGRxvxzTVL3GWj21p7jgRxmxlF6Q1Hxbc5MMlbfRoV12MAg77u5AYti1803GIKicvBEuddsNGHF3yK1jjUTpDXDIHnifZ_HmXNO-zRf1se4fyIt-W97GAAVu1s/s1600/table.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we can check how to send request to Handler Page, ie we do ajax calls to server, see the script below&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&lt;script language="javascript" type="text/javascript"&gt;
    function btnDoAjaxCall_onclick() {
        var xmlhttp;
            if (window.XMLHttpRequest)
              {
              xmlhttp=new XMLHttpRequest();
              }
            else
              {
              xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
              }
            xmlhttp.onreadystatechange=function()
              {
              if (xmlhttp.readyState==4 &amp;&amp; xmlhttp.status==200)
                {
              // showAvailability is a div used to display response form server
document.getElementById("showAvailability").innerHTML=xmlhttp.responseText;
                }
              }
        var str=document.getElementById("TextBox1").value;
        //sending request to handler page
        xmlhttp.open("GET","Handler.ashx?uname="+str,true);
        xmlhttp.send();
    }
    
&lt;/script&gt;
&lt;/pre&gt;&lt;br /&gt;
Above we  requested the handler file, Now we are going to check what handler file do when a request come from the client side.&lt;br /&gt;
first handler file check the query string. after create an instance of AjaxHelper class, it contain one boolean function called &lt;b&gt;CheckUserNameAvailable(stirng username)&lt;/b&gt;. if the value of &lt;b&gt;CheckUserNameAvailable &lt;/b&gt; is true, it send response as "Available" else it send "Not Available".&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;public void ProcessRequest(HttpContext context)
    {
        HttpRequest request = context.Request;
        HttpResponse response = context.Response;
        if (!string.IsNullOrEmpty(request.QueryString["uname"]))
        {
            AjaxHelper ajaxHelper = new AjaxHelper();
            bool available = ajaxHelper.CheckUserNameAvailable(request.QueryString["uname"]);
            if (available)
            {
                response.Write("&lt;div style="color: green; width: 200px;"&gt;Username Available&lt;/div&gt;");
            }
            else
            { response.Write("&lt;div style="color: red; width: 200px;"&gt;Username Not Available&lt;/div&gt;"); }
        }

    }&lt;/pre&gt;&lt;br /&gt;
Next is what is happening AjaxHelper Class, here is do not use any store procedure, if you need you can use SP. I already mentioned that this class contain only one method,  &lt;b&gt;public bool CheckUserNameAvailable(string username)&lt;/b&gt;&lt;br /&gt;
in this class I select the users in usertable which username is equal to requested username.&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;public class AjaxHelper
{
    public AjaxHelper()
    {
    }
    public bool CheckUserNameAvailable(string username)
    {
        DataBaseHelper DBHelper = new DataBaseHelper();
        string cmdString = string.Format("SELECT username FROM usertable  WHERE username ='{0}'", username);
        string user = Convert.ToString(DBHelper.ExecuteScalar(cmdString));
        if (string.IsNullOrEmpty(user))
            return true;
        else
            return false;
    }
}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Check the &lt;b&gt;DataBaseHelper &lt;/b&gt;Class, in DataBaseHelper class we read connection string form web.config file. then create sql connection, set sql command object, open sql connection, execute sql command, close sql connection, dispose command and connection.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;public class DataBaseHelper
{
    SqlConnection con;
    SqlCommand cmd;

    public DataBaseHelper()
    {
    }
    public object ExecuteScalar(string commandText)
    {
        con = Provider.GetConnection();
        cmd = new SqlCommand(commandText, con);
        con.Open();
        try
        {
            return cmd.ExecuteScalar();
        }
        catch
        { throw; }
        finally
        {
            cmd.Dispose();
            con.Close();
            con.Dispose();
        }
    }
}




public class Provider
{
    public static SqlConnection GetConnection()
    {
        return new SqlConnection(ConfigurationManager.AppSettings["sqlConn"]);
    }
}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Connection string in Web.Config &lt;/b&gt;&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&lt;appsettings&gt;
    &lt;add key="sqlConn" value="Data Source=MAKHAAI\SQLEXPRESS;Initial Catalog=test;Integrated Security=True"&gt;
  &lt;/add&gt;
&lt;/appsettings&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
Download source &lt;a href="http://www.cafekerala.com/makhaaiblogspot/username_availability.rar"&gt;username availability in asp.net Ajax&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2011/02/checking-username-availability-using.html</link><author>noreply@blogger.com (Raju.M)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyrou7-XoOIurSjb-WIjxmqADHIouLMlaffUBWrrMV_vP6yPMSNu3l5fqhL4cLS3d1O8lW_unoHkGe98j5it_kemKZE8_xQALB1m9-eTwBQdAwnW4wl9yG2kEJM_p47Ld535FokVgfALQ/s72-c/availlllllllllllll.png" width="72"/><thr:total>10</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-5182526443497891687</guid><pubDate>Tue, 25 Jan 2011 23:33:00 +0000</pubDate><atom:updated>2011-01-30T15:50:23.049-08:00</atom:updated><title>Javascript Countdown timer</title><description>This post is mainly to understand, how to program a countdown timer using javascript. if you need to study more about javascript and javascript timer function go to &lt;a href="http://www.w3schools.com"&gt;w3schools.com&lt;/a&gt; and select Learn JavaScript.&lt;br /&gt;
&lt;br /&gt;
Here I use two funtion to ActivateTimer() and Timer()&lt;br /&gt;
&lt;br /&gt;
check the script&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;&lt;script language="javascript" type="text/javascript"&gt;
            var min = 1;
            var sec = 59;
            var timer;
            var timeon = 0;
            function ActivateTimer() {
                if (!timeon) {
                    timeon = 1;
                    Timer();
                }
            }
            function Timer() {

                var _time = min + ":" + sec;
                document.getElementById("Label1").innerHTML =_time;
                if (_time != "0:0") {

                    if (sec == 0) {
                        min = min - 1;
                        sec = 59;
                    } else {
                        sec = sec - 1;
                    }
                    timer = setTimeout("Timer()", 1000);
                }
                else {
                    alert("Time is Over");
                }
            }
           
        &lt;/script&gt;&lt;/pre&gt;&lt;b&gt; Check the Output&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7hJkN0u-YSZIk1WuhBkhrhw0sKgQJzvSxNPdD4MFjtt5NO44-gzZjVcKogMSroA54-U0XBNqahtlW1NV86a1pVvwDuvRTCWnPqtAbeHwmnqkDcLh5KlWtJSsJolGRBd3NpBdJE7VQOng/s1600/image.axd.png" imageanchor="1" style=""&gt;&lt;img border="0" height="168" width="327" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7hJkN0u-YSZIk1WuhBkhrhw0sKgQJzvSxNPdD4MFjtt5NO44-gzZjVcKogMSroA54-U0XBNqahtlW1NV86a1pVvwDuvRTCWnPqtAbeHwmnqkDcLh5KlWtJSsJolGRBd3NpBdJE7VQOng/s400/image.axd.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://makhaai.dotnetobject.com/timer.html"&gt;Example URL&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Full code file&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="html" name="code"&gt;&amp;lt;HTML&amp;gt;
  &amp;lt;BODY&amp;gt;
  &amp;lt;div&amp;gt;
        &amp;lt;div ID=&amp;quot;Label1&amp;quot; style=&amp;quot;font-size:24pt;font-weight:bold;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;input type=&amp;quot;button&amp;quot; onclick=&amp;quot;ActivateTimer();&amp;quot; value=&amp;quot;Activate&amp;quot; /&amp;gt;
        &amp;lt;script language=&amp;quot;javascript&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;
            var min = 1;
            var sec = 59;
            var timer;
            var timeon = 0;
            function ActivateTimer() {
                if (!timeon) {
                    timeon = 1;
                    Timer();
                }
            }
            function Timer() {
                var _time = min + &amp;quot;:&amp;quot; + sec;
                document.getElementById(&amp;quot;Label1&amp;quot;).innerHTML =_time;
                if (_time != &amp;quot;0:0&amp;quot;) {
                    if (sec == 0) {
                        min = min - 1;
                        sec = 59;
                    } else {
                        sec = sec - 1;
                    }
                    timer = setTimeout(&amp;quot;Timer()&amp;quot;, 1000);
                }
                else {
                    alert(&amp;quot;Time is Over&amp;quot;);
                }
            }
        &amp;lt;/script&amp;gt;

    &amp;lt;/div&amp;gt;
 &amp;lt;/BODY&amp;gt;
&amp;lt;/HTML&amp;gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2011/01/javascript-countdown-timer.html</link><author>noreply@blogger.com (Raju.M)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7hJkN0u-YSZIk1WuhBkhrhw0sKgQJzvSxNPdD4MFjtt5NO44-gzZjVcKogMSroA54-U0XBNqahtlW1NV86a1pVvwDuvRTCWnPqtAbeHwmnqkDcLh5KlWtJSsJolGRBd3NpBdJE7VQOng/s72-c/image.axd.png" width="72"/><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-757330426643125683</guid><pubDate>Tue, 25 Jan 2011 23:22:00 +0000</pubDate><atom:updated>2011-04-25T14:56:40.242-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">Code Snippets</category><title>Limiting file size or getting file size of Upload file in ASP.Net</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;this is a small code snippet to limit file size on file upload&lt;br /&gt;
&lt;br /&gt;
Asp.Net FileUpload control's FileBytes.Length returns file size in Bytes. &lt;br /&gt;
Here we want file size in MB. so we want to divide size by 1024*1024.&lt;br /&gt;
&lt;br /&gt;
ie &lt;br /&gt;
1024 kilobytes = 1 megabyte (MB)&lt;br /&gt;
1 Kilobyte = 1024 bytes &lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;protected void Button1_Click(object sender, EventArgs e)
    {
        //checking size&amp;nbsp;
        double fileSize =(double) FileUpload1.FileBytes.Length;
        double fileinMB = fileSize / (1024 * 1024);
        if (fileinMB &amp;gt; limit)
        {
            Response.Write("Size is limited to 2MB");
        }
        else
        {
        //upload file
            Response.Write("Uploaded");
        }
       
    }

&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2011/01/limiting-file-size-or-getting-file-size.html</link><author>noreply@blogger.com (Raju.M)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-8359164460648505421</guid><pubDate>Sat, 06 Nov 2010 23:47:00 +0000</pubDate><atom:updated>2011-10-21T04:51:46.343-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">C#.Net</category><title>Image Handling In ASP.Net</title><description>&lt;b&gt;&lt;span style="font-size: large;"&gt;Contents&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Store Image&lt;/b&gt;&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;In Database&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;In Folder &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Display Image in Image Control, GridView and DataList&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;From Database&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;From Folder&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Creating Thumbnails&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Adding Watermark Text on Image&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Adding Image as Watermark&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Introduction&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; In this Article&amp;nbsp; I am going to explain how to handle image in ASP.Net. I seen lot of question regarding &lt;b&gt;"How to save and display image from database in ASP.Net"&amp;nbsp;&lt;/b&gt; in different .net discussing forums. I think it must be helpful for beginners to solve their problems regarding images in ASP.Net. &amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Store Images &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
We can store images in Database and project folders. If it is in Database the datatype of image data is "image" , now we can check the Database design&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;In Database&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjff0n2HzhdreyAaKDf_fSB4UUS8ojYwKZX6JUnPd7c78EQxCzq__UnjoQ7HDzDrGiaoN-zC-UOEfbWmEnVRGsHcVmkVOeqnMlVkGQb8yd-hKQKV42BJXh9tJ3j93P0dDLHjU_obByzbos/s1600/database.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjff0n2HzhdreyAaKDf_fSB4UUS8ojYwKZX6JUnPd7c78EQxCzq__UnjoQ7HDzDrGiaoN-zC-UOEfbWmEnVRGsHcVmkVOeqnMlVkGQb8yd-hKQKV42BJXh9tJ3j93P0dDLHjU_obByzbos/s1600/database.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
here I used create a store procedure to save image in database.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;CREATE PROCEDURE [dbo].[sp_UploadImage]
@imageData as image
AS
BEGIN
INSERT INTO Images (imageData) VALUES(@imageData)
END
&lt;/pre&gt;&lt;br /&gt;
Now we can look how to save image in Database. we need one FileUpload Control to select file. and need to check file extension to verify uploading file is image or not. below script function "valiadate();"&amp;nbsp; check the file is image or not, ie we check the file extensions with javascript. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Javascript to check Upload file extension&lt;/b&gt; &lt;br /&gt;
&lt;pre class="javascript" name="code"&gt;&lt;script language="javascript" type="text/javascript"&gt;
            function validate() {
                var result = false;
                var upfile = document.getElementById("FileUpload1").value;
                if (upfile != "") {
                    var accept = "png,gif,jpg,jpeg".split(',');
                    var getExtention = upfile.split('.');
                    var extention = getExtention[getExtention.length - 1];
                    for (i = 0; i &lt; accept.length; i++) {
                        if (accept[i] == extention) {
                            result = true;
                            break;
                        }
                    }
                    if (!result) {
                        alert("allowed file extetions are png,gif,jpg,jpeg");
                    }
                }
                else {
                    alert("select image to Upload");
                }
                return result;
            }
        
&lt;/script&gt;
&lt;/pre&gt;&lt;b&gt;Now check the .aspx page&lt;/b&gt; 










&lt;pre class="html" name="code"&gt; &lt;asp:fileupload id="FileUpload1" runat="server"&gt;
    &lt;asp:button id="btnUploadImage" onclick="btnUploadImage_Click" onclientclick="return validate();" runat="server" text="Upload to DataBase"&gt;
&lt;/asp:button&gt;&lt;/asp:fileupload&gt;&lt;/pre&gt;Now server side code. Reading bytes value from FileUpload Control and pass that value with store procedure name in to a HashTable. that hashtable send to DataBaseHelper Class file to save image in Database.










&lt;pre class="csharp" name="code"&gt; protected void btnUploadImage_Click(object sender, EventArgs e)
    {
        //server side checking
        if (FileUpload1.PostedFile.ContentType.ToLower().StartsWith("image") &amp;amp;&amp;amp; FileUpload1.HasFile)
        {
            Hashtable imageHash = new Hashtable();
            imageHash.Add("@imageData", FileUpload1.FileBytes);
            DataBaseHelper DBHelper = new DataBaseHelper();
            //storing image in to DataBase
            DBHelper.ExecuteNonQuery("sp_UploadImage", imageHash);
        }
    }&amp;nbsp;&lt;/pre&gt;&lt;b&gt; Database with image data&lt;/b&gt;










&lt;div class="separator" style="clear: both; text-align: center;"&gt;

&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXM9dlhAsI79e80f6MW6krlgXceYlTH2UU3nlPQArCrgwRH5GD4lCgUYUkvPuI0Tq0od8rGqt7zJMEEyutM9cWDZk73pEhyphenhyphenHqjHu_WZbXtYg5eBJlWmIsZ4-EBw6RgafK0syojO51SwAI/s1600/databasewithimage.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXM9dlhAsI79e80f6MW6krlgXceYlTH2UU3nlPQArCrgwRH5GD4lCgUYUkvPuI0Tq0od8rGqt7zJMEEyutM9cWDZk73pEhyphenhyphenHqjHu_WZbXtYg5eBJlWmIsZ4-EBw6RgafK0syojO51SwAI/s1600/databasewithimage.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;
In Folder&lt;/span&gt;&lt;/b&gt;
Saving folder is simple to compare saving in Database. FileUpload control have SaveAs() method to save file. here I save images in "savedImages" folder. We are not keeping any values in database. At the time of display image we pick images from folder using DirectoryInfo and FileInfo Class or Directory.GetFiles Methord











&lt;pre class="csharp" name="code"&gt;protected void btnUploadToFolder_Click(object sender, EventArgs e)
    {
        //save file in folder
        if (FileUpload1.PostedFile.ContentType.ToLower().StartsWith("image") &amp;amp;&amp;amp; FileUpload1.HasFile)
        {
            string savelocation = Server.MapPath("savedImages/");
            string fileExtention = System.IO.Path.GetExtension(FileUpload1.FileName);
            //creating filename to avoid file name conflicts.
            string fileName = Guid.NewGuid().ToString();
            //saving file in savedImage folder.
            string savePath = savelocation + fileName + fileExtention;
            FileUpload1.SaveAs(savePath);
        }
    }&lt;/pre&gt;&lt;b&gt;Preview of saved images in folder&lt;/b&gt;











&lt;div class="separator" style="clear: both; text-align: center;"&gt;

&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5OrNN2n3XBrMkWgRikcTUQgZcpWAX53ZxNjpQBuFJGKs4DIYrTBDKg-71tIJPX6uXgA6g8NR5Egzy5SHfTZ5FtNQNTnsHlfhF2kHRNwY3wTYxSC2niYTbVJ_x1l9LiUoXAKA8dlU-z_E/s1600/savedImages.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5OrNN2n3XBrMkWgRikcTUQgZcpWAX53ZxNjpQBuFJGKs4DIYrTBDKg-71tIJPX6uXgA6g8NR5Egzy5SHfTZ5FtNQNTnsHlfhF2kHRNwY3wTYxSC2niYTbVJ_x1l9LiUoXAKA8dlU-z_E/s1600/savedImages.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Display Images in Image Control, GridView and DataList&lt;/span&gt;&lt;/b&gt;
To display image from Database is not simple as displaying from folders. because we previously saved image as byte in Database.

&lt;b&gt;&lt;span style="font-size: large;"&gt;
From Database
&lt;/span&gt;&lt;/b&gt;
To display image, we need to change&amp;nbsp; byte data to Image, to convert byte data to image we need to use a separate page, here I am using a Generic Handler page to show image from Database.&amp;nbsp; 
In that Generic Handler page we take image byte from Database and render in that Handler page and set image controls src or ImageUrl to that Generic Handler page for example it work like this











&lt;pre class="csharp" name="code"&gt;//from database
Image1.ImageUrl="Handler.aspx?id=1";
//from folder
Image1.ImageUrl="savedImages/ca34fa6c-8321-492c-938b-5413781bdcde.png";
&lt;/pre&gt;&lt;b&gt;Display image in Generic Handler page&lt;/b&gt;

&lt;b&gt;
Method 1&lt;/b&gt;











&lt;pre class="csharp" name="code"&gt;  
   public void ProcessRequest (HttpContext context) {
        HttpRequest request = context.Request;
        if (!string.IsNullOrEmpty(request.QueryString["id"]))
        {
            //this hash table contain the SP parameter
            Hashtable hash = new Hashtable();
            hash.Add("@imageID", request.QueryString["id"]);
            DataBaseHelper DBHelper = new DataBaseHelper();

            //DBHelper.SQLExecuteNonQuery(procedure_name,command_parameters) return the object data.
            // casting return value to byte[]
            byte[] imageByte = (byte[])DBHelper.SQLExecuteNonQuery("sp_getImage", hash);
            //creating object of image
            System.Drawing.Image b;
            //creating object of bitmap
            Bitmap bitMap = null;
            //checking byte[] 
            if (imageByte != null &amp;amp;&amp;amp; imageByte.Length &amp;gt; 0)
            {
                //creating memoryStream object
                using (MemoryStream mm = new MemoryStream())
                {
                    //wrting to memoryStream
                    mm.Write(imageByte, 0, imageByte.Length);
                    b = System.Drawing.Image.FromStream(mm);
                    bitMap = new System.Drawing.Bitmap(b, b.Width, b.Height);
                    //creating graphic object, to produce High Quality images.
                    using (Graphics g = Graphics.FromImage(bitMap))
                    {
                        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                        g.SmoothingMode = SmoothingMode.HighQuality;
                        g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                        g.DrawImage(bitMap, 0, 0, b.Width, b.Height);
                        g.Dispose(); b.Dispose(); mm.Dispose();
                        //changing content type of handler page
                        context.Response.ContentType = "image/jpeg";
                        //saving bitmap image
                        bitMap.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                        bitMap.Dispose();
                    }
                }
            }
        }
    }
  &lt;/pre&gt;&lt;b&gt;Method 2&lt;/b&gt;
You can also use this code to render image in Handler page











&lt;pre class="csharp" name="code"&gt;public void ProcessRequest (HttpContext context) {
        HttpRequest request = context.Request;
        if (!string.IsNullOrEmpty(request.QueryString["id"]))
        {
            //this hash table contain the SP parameter
            Hashtable hash = new Hashtable();
            hash.Add("@imageID", request.QueryString["id"]);
            DataBaseHelper DBHelper = new DataBaseHelper();

            //DBHelper.SQLExecuteNonQuery(procedure_name,command_parameters) return the object data.
            // casting return value to byte[]
            byte[] imageByte = (byte[])DBHelper.SQLExecuteNonQuery("sp_getImage", hash);
            //checking byte[] 
            if (imageByte != null &amp;amp;&amp;amp; imageByte.Length &amp;gt; 0)
            {
                context.Response.ContentType = "image/jpeg";
                context.Response.BinaryWrite(imageByte);
            }
        }
    }&amp;nbsp;&lt;/pre&gt;Example of Handler page displaying image, and check the URL, it display 3rd&amp;nbsp; image from the Database.











&lt;div class="separator" style="clear: both; text-align: center;"&gt;

&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDAmG-U3E9CfXNC0WBxj7jbQG_iJMV_STV9RMWz4B2WzpMMbjDbsQzo9oxPv7YNpRcZXrSStxKQAZcQsdCsBA4P8jXwKF5N7-MCRasHo6h9NsFx-XE1URPNpdHXgzsGL_7M6GYNt5CCx0/s1600/sampleimagefromhandler.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="303" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDAmG-U3E9CfXNC0WBxj7jbQG_iJMV_STV9RMWz4B2WzpMMbjDbsQzo9oxPv7YNpRcZXrSStxKQAZcQsdCsBA4P8jXwKF5N7-MCRasHo6h9NsFx-XE1URPNpdHXgzsGL_7M6GYNt5CCx0/s640/sampleimagefromhandler.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Store procedure used to get Image












&lt;pre class="csharp" name="code"&gt;CREATE PROCEDURE sp_getImage
@imageID as numeric
AS
BEGIN
SELECT imageData FROM Images WHERE imageId=@imageID
END&amp;nbsp;&lt;/pre&gt;I already said how to display image in Image Conrtol. now we can check how to display in  &lt;b&gt;GridView Control&lt;/b&gt; form folders and Database.


&lt;b&gt;
From Database&lt;/b&gt;
In the aspx page I put a GridView and , then set SqlDataSource, after that I&amp;nbsp; add a Template column, then drag and drop a Image control in Template column&amp;nbsp; and set ImageUrl of the image control using Image DataBinding


&lt;b&gt;Setting image url&amp;nbsp;&lt;/b&gt;












&lt;div class="separator" style="clear: both; text-align: center;"&gt;

&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjxZl1TZhGYK88WSMPw-R4dEv4_CPXZkkrzHivaj8KRcfUAvnld3dTdBU-Nsh2zJSAsMXl9QSVcBI03d2J5P3lvEGwoE3b6wnfgGNO7YNe26nw0EkDyENRNEjQphQ5aATjGIQApyDHDns/s1600/gridview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="402" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjxZl1TZhGYK88WSMPw-R4dEv4_CPXZkkrzHivaj8KRcfUAvnld3dTdBU-Nsh2zJSAsMXl9QSVcBI03d2J5P3lvEGwoE3b6wnfgGNO7YNe26nw0EkDyENRNEjQphQ5aATjGIQApyDHDns/s640/gridview.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;


&lt;b&gt;Source of GridView&lt;/b&gt;
Passing &lt;b&gt;imageId&lt;/b&gt; to Handler.ashx page. It will display image as I said above.












&lt;div class="separator" style="clear: both; text-align: center;"&gt;

&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ34XqeNqRwHB8c2m1o_cyybsTKA1A8Zv6DFSte435J4h8HwkT9ai_9shZp0wJGlYmK_kuk5YkwjjtTSb_YTOvCXdd2K4_WkVDl8Ji_MPiNg6E3pCysLsMEbBWuL5Jg1CaeDC041_J4WM/s1600/gridviews.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ34XqeNqRwHB8c2m1o_cyybsTKA1A8Zv6DFSte435J4h8HwkT9ai_9shZp0wJGlYmK_kuk5YkwjjtTSb_YTOvCXdd2K4_WkVDl8Ji_MPiNg6E3pCysLsMEbBWuL5Jg1CaeDC041_J4WM/s1600/gridviews.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;
Preview with HTML Source.&lt;/b&gt;












&lt;div class="separator" style="clear: both; text-align: center;"&gt;

&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMQtDnc9ut_M0A62rkGQ233tUo7RPSa9WTkRSYK71T9fxaUjoIgsKCbsGmIDGGyRhOCT4jF6aXEu-QEaKgrnMTpUu939WVx0VI7ZFcrAHQyn3DaHbL2rlBhEJPz85B2gUZzaRp5qkniXs/s1600/gridviewSample.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="448" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMQtDnc9ut_M0A62rkGQ233tUo7RPSa9WTkRSYK71T9fxaUjoIgsKCbsGmIDGGyRhOCT4jF6aXEu-QEaKgrnMTpUu939WVx0VI7ZFcrAHQyn3DaHbL2rlBhEJPz85B2gUZzaRp5qkniXs/s640/gridviewSample.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt; Displaying Image From Folder&lt;/b&gt;
you need to add a template column in GridView after that put one image control on template column, then set image controls DataImageUrlField from DataTable.










&lt;pre class="xml" name="code"&gt;&amp;lt;asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false"&amp;gt;
     &amp;lt;Columns&amp;gt;
         &amp;lt;asp:ImageField  DataImageUrlField="Image"&amp;gt;
         &amp;lt;/asp:ImageField&amp;gt;
     &amp;lt;/Columns&amp;gt;
 &amp;lt;/asp:GridView&amp;gt;&lt;/pre&gt;&lt;b&gt; Server side code&lt;/b&gt;










&lt;pre class="csharp" name="code"&gt; private void BindImage()
    {
     
        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("Image", typeof(string)));
        DataRow dr;
        int i = 0;
  //fetching files from savedImages folder
        foreach (string file in Directory.GetFiles(Server.MapPath(@"savedImages\")))
        {
            dr = dt.NewRow();
            dt.Rows.Add(dr);
            dr["Image"] = "savedImages/" + System.IO.Path.GetFileName(file);
            i += 1;
        }
        GridView2.DataSource = dt;
        GridView2.DataBind();
    }
&lt;/pre&gt;Now we can check how DataList works. Datalist is more simple control than GridView. Here aslo we call Database image with Generic Handler file Handler.ashx and pass "id" as QueryString. handler file display image, and we point that image in to our DataList Control.











&lt;pre class="xml" name="code"&gt;&amp;lt;asp:DataList ID="DataList1" runat="server"
            RepeatColumns="3" RepeatDirection="Horizontal"&amp;gt;
            &amp;lt;ItemTemplate&amp;gt;
                &amp;lt;table&amp;gt;
                    &amp;lt;tr&amp;gt;
                        &amp;lt;td valign="middle" align="center" style="background-color:#cccccc;border:1px solid gray;width:150px;height:150px;"&amp;gt;&amp;lt;%#DataBinder.Eval(Container.DataItem, "images") %&amp;gt;&amp;lt;/td&amp;gt;
                    &amp;lt;/tr&amp;gt;
                &amp;lt;/table&amp;gt;
            &amp;lt;/ItemTemplate&amp;gt;
        &amp;lt;/asp:DataList&amp;gt;&lt;/pre&gt;&lt;pre class="csharp" name="code"&gt;protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            BindDataList();
    }
    private void BindDataList()
    {
        string sqlCmd = "SELECT imageid FROM Images";
        DataBaseHelper DBHelper = new DataBaseHelper();
        DataTable dt = DBHelper.GetTable(sqlCmd);
        //adding new column to disply image
        DataColumn imageCol = new DataColumn("images", typeof(string));
        dt.Columns.Add(imageCol);
        
        if (dt.Rows.Count &amp;gt; 0)
        {
            for (int i = 0; i &amp;lt; dt.Rows.Count; i++)
            {
                dt.Rows[i][imageCol] = string.Format("&amp;lt;img src='Handler.ashx?id={0}' alt='' style='width:100px' /&amp;gt;", dt.Rows[i][0].ToString());
            }
        }
        DataList1.DataSource = dt;
        DataList1.DataBind();
    }&lt;/pre&gt;&lt;b&gt; Preview of Images in DataList Control&lt;/b&gt;










&lt;div class="separator" style="clear: both; text-align: center;"&gt;

&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0BE7bi93SGPU2e7PvWxaDdTHzYszCyPPDOHIi7yd6qMqVfN607-kWuCqJbwLP-ebcFzBwSFI6CIUlSBGY8iPxwJwWNlF-79TjY4TUIXW0jNAh7uvcmrETtVMOi4crTaI6bF0rjJ3T4DQ/s1600/datalist.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0BE7bi93SGPU2e7PvWxaDdTHzYszCyPPDOHIi7yd6qMqVfN607-kWuCqJbwLP-ebcFzBwSFI6CIUlSBGY8iPxwJwWNlF-79TjY4TUIXW0jNAh7uvcmrETtVMOi4crTaI6bF0rjJ3T4DQ/s1600/datalist.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Creating Thumbnails image&lt;/span&gt;&lt;/b&gt;
To create a thumbnail we need a image. we can pick image from FileUpload Control, then we need to know dimension of image ie [ Width x Height ]. Here I create a UI to handle this. check the UI









&lt;div class="separator" style="clear: both; text-align: center;"&gt;

&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCLFq_g6Vy7b5Evsh5kIOk2OpBEpW35q-VDuowDvyGZUe9eoD2Nk3Pe8vx0sX_v88bPiAuGmRq930WB4e6DusdlawUSY248qFQ4U1TLLR-DGVuIv-1sKpVu9M7_d0Yhbw6kKYEUc_RjRo/s1600/thumbs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCLFq_g6Vy7b5Evsh5kIOk2OpBEpW35q-VDuowDvyGZUe9eoD2Nk3Pe8vx0sX_v88bPiAuGmRq930WB4e6DusdlawUSY248qFQ4U1TLLR-DGVuIv-1sKpVu9M7_d0Yhbw6kKYEUc_RjRo/s1600/thumbs.png" /&gt;&lt;/a&gt;&lt;/div&gt;To maintain aspect ratio of image with height and width I use a class AspectRatio.cs
you can get the source code "Browse Code" or "Download Source" Section. Now we can look the code of thumbnail creating section. As I said above here I call a function to create thumbs. let look at this. Below method returns Bitmap image, I am saving that image in root folder.









&lt;pre class="csharp" name="code"&gt; public Bitmap CreateThumbnail(byte[] imageByte, bool maintainAspectRatio, int desiredWidth, int desiredHeight)
    {
        Bitmap bmp = null;
        try
        {
            MemoryStream memStream = new MemoryStream(imageByte);
            System.Drawing.Image img = System.Drawing.Image.FromStream(memStream);

            if (maintainAspectRatio)
            {
                AspectRatio aspectRatio = new AspectRatio();
                aspectRatio.WidthAndHeight(img.Width, img.Height, desiredWidth, desiredHeight);
                bmp = new Bitmap(img, aspectRatio.Width, aspectRatio.Height);
            }
            else
            {
                bmp = new Bitmap(img, desiredWidth, desiredHeight);
            }
            memStream.Dispose();
        }
        catch(Exception ex)
        {
            havException = true;
            ExceptionMessage = ex.Message;
        }
        return bmp;
    }

&lt;/pre&gt;Server side code of "Create Thumbnail" Button. You can see this button in above image. here I pass image byte[] to CreateThumbnail Method. it return Bitmap Image. and save that file in root folder.









&lt;pre class="csharp" name="code"&gt; protected void btnCreateThumb_Click(object sender, EventArgs e)
    {
        int width = 0;
        int height = 0;
        byte[] image = FileUpload1.FileBytes;
        Int32.TryParse(txtDWidth.Text, out width);
        Int32.TryParse(txtDHeight.Text, out height);
        ImageHandler imageHandler = new ImageHandler();
        bool maintainAR = cbxAspectRation.Checked;
        //calling CreateThumbnail Method to create thumb images
        //it returns Bitmap Image. 
        Bitmap bmp = imageHandler.CreateThumbnail(image, maintainAR, width, height);
        if (bmp != null)
        {
            //creating a file name with guid.
            string fileName = Guid.NewGuid().ToString() + ".jpg";
            //saving in current root folder.
            bmp.Save(Server.MapPath(fileName));
            //set image controls ImageUrl to saved Image, this is to view the thumbnail image
            Image1.ImageUrl = fileName;
        }
        else
        {
            //exception part
            if (imageHandler.havException)
            {
                Response.Write(imageHandler.ExceptionMessage);
            }
        }
    }
&lt;/pre&gt;You can check preview of Thumbnail ,Height and Width of image with the help of Firebug&amp;nbsp; console.








&lt;div class="separator" style="clear: both; text-align: center;"&gt;

&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgip08lDy1SuKTtiH8cp1nOU1fuiBn5E-ohyphenhyphenysA9REzfFEg0H8yMqC-v0mL_9ri9fcV9JZsO1EeOK5AF0ks-8dZAN0j3X3OBhU3FldrCJ712kIdLNM6ZxheqIOFsRO2ZQf995FWa24WQCg/s1600/thumbspreview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="478" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgip08lDy1SuKTtiH8cp1nOU1fuiBn5E-ohyphenhyphenysA9REzfFEg0H8yMqC-v0mL_9ri9fcV9JZsO1EeOK5AF0ks-8dZAN0j3X3OBhU3FldrCJ712kIdLNM6ZxheqIOFsRO2ZQf995FWa24WQCg/s640/thumbspreview.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Creating Watermark Text on Image&lt;/span&gt;&lt;/b&gt;
Now we can discuss how to add Watermark on image. I think you know about &lt;a href="http://en.wikipedia.org/wiki/Watermark"&gt;Watermark&lt;/a&gt;. 
here I call a method &lt;b&gt;AddWatermarkText&lt;/b&gt; to add watermark on image. I pass image byte and watermark text to this method. method create on System.Drawing.Image object from MemoryStream. MemoryStream Hold the  image Byte. using System.Drawing.SolidBrush and System.Drawing.Font we create Text after that 





&lt;pre class="csharp" name="code"&gt; 
Graphics.DrawString(string s, Font font, Brush brush, PointF point);
&lt;/pre&gt;we write text on Image. below method is AddWatermarkText(byte[] imageByte,string textOnImage); you can check that. 







&lt;pre class="csharp" name="code"&gt; 

public Image AddWatermarkText(byte[] imageByte,string textOnImage)
    {
        System.Drawing.Image img = null;
        try
        {
            MemoryStream memStream = new MemoryStream(imageByte);
            img = System.Drawing.Image.FromStream(memStream);
            Graphics g = System.Drawing.Graphics.FromImage(img);
            Font font = new Font("Aril", 30, FontStyle.Bold);

            SolidBrush solidBrush = new SolidBrush(Color.Red);
            Point point = new Point(img.Width / 3, img.Height / 2);
            g.DrawString(textOnImage, font, solidBrush, point);
            g.Save();

            memStream.Dispose();
            g.Dispose();
            solidBrush.Dispose();
            font.Dispose();
        }
        catch(Exception ex)
        {
            havException = true;
            ExceptionMessage = ex.Message;
        }
        return img;
    }
&lt;/pre&gt;above method return Image. I am saving this image in root folder and display it using a Image control. you can check the UI of add Watermark Page and watermark on resultant Image.





&lt;div class="separator" style="clear: both; text-align: center;"&gt;

&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw74DXIygFjEneuja9GFq2uKWGg3XDoBu_jnzJmpQCOIHpKtLNVWAtQEXYkAxV-3tOPCnPejAMtTICTB5ZkE58jjLAFUfhLhW2YV2PfbIDUUzCB9axF6HfqrCAcduR6nhaUypodfZ33Sk/s1600/watermark.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw74DXIygFjEneuja9GFq2uKWGg3XDoBu_jnzJmpQCOIHpKtLNVWAtQEXYkAxV-3tOPCnPejAMtTICTB5ZkE58jjLAFUfhLhW2YV2PfbIDUUzCB9axF6HfqrCAcduR6nhaUypodfZ33Sk/s1600/watermark.png" /&gt;&lt;/a&gt;&lt;/div&gt;Now we can check the code of Add Watermark button





&lt;pre class="csharp" name="code"&gt; protected void btnAddWaterMark_Click(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
        {
            byte[] imgbyte = FileUpload1.FileBytes;
            //creating object of ImageHandler Class
            ImageHandler imageHandler = new ImageHandler();
            System.Drawing.Image imageWithWatermark = imageHandler.AddWatermarkText(imgbyte, txtWaterMarkText.Text);
            if (imageWithWatermark != null)
            {
                //file name to save
                string saveFileName = Guid.NewGuid().ToString() + ".jpg";
                //saving image in current root location
                imageWithWatermark.Save(Server.MapPath(saveFileName));
                //displaying image file in a Image Control
                Image1.ImageUrl = saveFileName;
                imageWithWatermark.Dispose();
            }
            else
            {
                if (imageHandler.havException)
                {
                    Response.Write(imageHandler.ExceptionMessage);
                }
            }
        }
    }
&lt;/pre&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Image as Watermark&lt;/span&gt;&lt;/b&gt;

In this section I am explaining how to add Image as watermark. I think you seen same website with images. they have their log on image. we can check how to do something link that

first we need a logo image here I take codeproject's logo image to explain this example. I save CP logo image in  watermarklogo folder.




&lt;div class="separator" style="clear: both; text-align: center;"&gt;

&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAi0BAsreN859AS4sBTmKhkIYISNsCFO5C_wf8XQXyR5tsPxcR3hcB_Nk4dSTRA-odZByCKQFY6pGonjPlqd9fMErid9I8k4t7P7b7MgGUi6skTVzrKLfLW3N0TKV3g4_Ge1f37q00dGA/s1600/imageaswatermark.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAi0BAsreN859AS4sBTmKhkIYISNsCFO5C_wf8XQXyR5tsPxcR3hcB_Nk4dSTRA-odZByCKQFY6pGonjPlqd9fMErid9I8k4t7P7b7MgGUi6skTVzrKLfLW3N0TKV3g4_Ge1f37q00dGA/s1600/imageaswatermark.png" /&gt;&lt;/a&gt;&lt;/div&gt;I am embedding CP logo image in to an upload image, using Graphics.DrawImage(Image image, Point point); Method. here I add  add fading to logo image  using TextureBrush




&lt;pre class="csharp" name="code"&gt; //add fading to logo image  using TextureBrush
        System.Drawing.Image waterMarkimage = System.Drawing.Image.FromFile(Server.MapPath("watermarklogo/CodeprojectLogo.jpg"));
        Graphics opacity = System.Drawing.Graphics.FromImage(waterMarkimage);
        Rectangle imageRect = new Rectangle(0, 0, waterMarkimage.Width, waterMarkimage.Height);
        Brush brush = new TextureBrush(waterMarkimage, imageRect);
        opacity.FillRectangle(brush, imageRect);
        opacity.Save();
&lt;/pre&gt;check the sample image




&lt;div class="separator" style="clear: both; text-align: center;"&gt;

&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYzmquqkM-1t3U5KT44xrzJIWIOTiZCU8rbHv95xpzFIupcKU86EkiXpXzHUH2WpRL1T4qQkfkxwMNJMmiia06-dR46FGhufJmj_r2UcgLVRaOA2z8_7d3M_M9TFUkUyei_YChlffzPlk/s1600/imageOOOO.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYzmquqkM-1t3U5KT44xrzJIWIOTiZCU8rbHv95xpzFIupcKU86EkiXpXzHUH2WpRL1T4qQkfkxwMNJMmiia06-dR46FGhufJmj_r2UcgLVRaOA2z8_7d3M_M9TFUkUyei_YChlffzPlk/s1600/imageOOOO.png" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;

&lt;/div&gt;Check the source code



&lt;pre class="csharp" name="code"&gt;protected void btnAddImageAsWaterMark_Click(object sender, EventArgs e)
    {
        byte[] imageByte = FileUpload1.FileBytes;
        MemoryStream memStream = new MemoryStream(imageByte);
        System.Drawing.Image img = System.Drawing.Image.FromStream(memStream);

        //add fading to logo image  using TextureBrush
        System.Drawing.Image waterMarkimage = System.Drawing.Image.FromFile(Server.MapPath("watermarklogo/CodeprojectLogo.jpg"));
        Graphics opacity = System.Drawing.Graphics.FromImage(waterMarkimage);
        Rectangle imageRect = new Rectangle(0, 0, waterMarkimage.Width, waterMarkimage.Height);
        Brush brush = new TextureBrush(waterMarkimage, imageRect);
        opacity.FillRectangle(brush, imageRect);
        opacity.Save();
       
        Graphics g = System.Drawing.Graphics.FromImage(img);
        Point point = new Point(img.Width / 3, img.Height / 2);
        g.DrawImage(waterMarkimage, point);
        string filename = Guid.NewGuid().ToString() + ".jpg";
        img.Save(Server.MapPath(filename));
        
        opacity.Dispose();
        memStream.Dispose();
        g.Dispose();
        waterMarkimage.Dispose();
        img.Dispose();

        Image1.ImageUrl = filename;
    }&amp;nbsp;&lt;/pre&gt;
&lt;a href="http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=126421"&gt;Download full source code&lt;/a&gt; 
&lt;a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=3497545" rel="tag" style="display: none;"&gt;CodeProject&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2010/11/image-handling-in-aspnet-part-1.html</link><author>noreply@blogger.com (Raju.M)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjff0n2HzhdreyAaKDf_fSB4UUS8ojYwKZX6JUnPd7c78EQxCzq__UnjoQ7HDzDrGiaoN-zC-UOEfbWmEnVRGsHcVmkVOeqnMlVkGQb8yd-hKQKV42BJXh9tJ3j93P0dDLHjU_obByzbos/s72-c/database.png" width="72"/><thr:total>9</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-7272361388139202323</guid><pubDate>Mon, 20 Sep 2010 01:30:00 +0000</pubDate><atom:updated>2010-10-05T15:46:00.186-07:00</atom:updated><title>Delete Data in GridView Using Template Button</title><description>This article  explain how to delete data from &lt;b&gt;GridView &lt;/b&gt;using &lt;b&gt;Template Buttons&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Now we look how to add template button in &lt;b&gt;GridView&lt;/b&gt;.&lt;br /&gt;
first select &lt;b&gt;Edit Columns &lt;/b&gt; in GridView. &lt;br /&gt;
&lt;br /&gt;
&lt;img height="262" src="http://img831.imageshack.us/img831/2640/img1ml.jpg" width="640" /&gt;&lt;br /&gt;
&lt;br /&gt;
2nd add template column in GridView. &lt;br /&gt;
&lt;br /&gt;
&lt;img height="465" src="http://img827.imageshack.us/img827/8820/img2r.jpg" width="640" /&gt;&lt;br /&gt;
&lt;br /&gt;
Now configuring template column, Click &lt;b&gt;Edit Template&lt;/b&gt;. Place a &lt;b&gt;LinkButton&lt;/b&gt; on Template field. Click &lt;b&gt;Edit Databindings&lt;/b&gt; , then select &lt;b&gt;CommandArgument &lt;/b&gt; , after that set  field binding, bound to "ID" field, this ID field is used to delete data in server side code. Then press ok button.&lt;br /&gt;
&lt;br /&gt;
&lt;img height="281" src="http://img835.imageshack.us/img835/6821/img3b.jpg" width="640" /&gt;&lt;br /&gt;
&lt;img height="379" src="http://img214.imageshack.us/img214/448/img4f.jpg" width="640" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we can configure &lt;b&gt;LinkButton&lt;/b&gt; [ Delete button ].&lt;br /&gt;
Select &lt;b&gt;Property &lt;/b&gt;of Link button. set &lt;b&gt;CommandName&lt;/b&gt; and Text as Delete.&lt;br /&gt;
We can  access this  &lt;b&gt;CommandName &lt;/b&gt; in &lt;b&gt;GridView1_RowCommand&lt;/b&gt; event.  After this add GridView events &lt;b&gt;GridView1_RowCommand&lt;/b&gt; and  &lt;b&gt;GridView1_RowDeleted&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;img height="472" src="http://img265.imageshack.us/img265/6695/img5bm.jpg" width="640" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &lt;b&gt;RowDeleted &lt;/b&gt;event is raised whenever a Delete button associated with an item in the GridView control is clicked, but after the GridView control deletes the record.&lt;br /&gt;
&lt;br /&gt;
This allows you to provide an event-handling method that performs a custom routine, such as checking the results of a delete operation, whenever this event occurs. To avoid errors  we add one custom code in &lt;b&gt;GridView1_RowDeleted&lt;/b&gt; event&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;//handling gridview delete excetion
        e.ExceptionHandled = true;

&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Now the server side part.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="c-sharp" name="code"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Default3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e)
    {
        //handling gridview delete excetion
        e.ExceptionHandled = true;
    }
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "dele")
        {
            //database Helper
            DBHelper objDBHelper = new DBHelper();
            //sql command to delete data from database
            string sqlCmdText = string.Format("DELETE FROM Table WHERE ID='{0}'", e.CommandArgument.ToString());
            //Executeing sql command
            objDBHelper.ExecuteScalar(sqlCmdText);
            //refresh gridview
            GridView1.DataBind();

        }
    }
}

&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
ASPX Page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="html" name="code"&gt;&amp;lt;%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %&amp;gt;
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;
&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;
&amp;lt;head runat="server"&amp;gt;
    &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;form id="form1" runat="server"&amp;gt;
    &amp;lt;div&amp;gt;
        &amp;lt;asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
            DataSourceID="SqlDataSource1" onrowcommand="GridView1_RowCommand"
            onrowdeleted="GridView1_RowDeleted"&amp;gt;
            &amp;lt;Columns&amp;gt;
                &amp;lt;asp:BoundField DataField="biInvitationId" HeaderText="biInvitationId"
                    InsertVisible="False" ReadOnly="True" SortExpression="biInvitationId" /&amp;gt;
                &amp;lt;asp:BoundField DataField="biEventName" HeaderText="biEventName"
                    SortExpression="biEventName" /&amp;gt;
                &amp;lt;asp:BoundField DataField="biHostName" HeaderText="biHostName"
                    SortExpression="biHostName" /&amp;gt;
                &amp;lt;asp:BoundField DataField="biTelephone" HeaderText="biTelephone"
                    SortExpression="biTelephone" /&amp;gt;
                &amp;lt;asp:TemplateField&amp;gt;
                    &amp;lt;ItemTemplate&amp;gt;
                        &amp;lt;asp:LinkButton ID="LinkButton1" runat="server"
                            CommandArgument='&amp;lt;%# Eval("biInvitationId") %&amp;gt;' CommandName="dele"&amp;gt;Delete&amp;lt;/asp:LinkButton&amp;gt;
                    &amp;lt;/ItemTemplate&amp;gt;
                &amp;lt;/asp:TemplateField&amp;gt;
            &amp;lt;/Columns&amp;gt;
        &amp;lt;/asp:GridView&amp;gt;
        &amp;lt;asp:SqlDataSource ID="SqlDataSource1" runat="server"&amp;gt;
        &amp;lt;/asp:SqlDataSource&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;br /&gt;
Thank you,&lt;br /&gt;
&lt;br /&gt;
Feel free to comment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=3497545" rel="tag" style="display: none;"&gt;CodeProject&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2010/09/delete-data-in-gridview-using-template.html</link><author>noreply@blogger.com (Raju.M)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-2192429863892620315</guid><pubDate>Sat, 04 Sep 2010 16:24:00 +0000</pubDate><atom:updated>2010-09-04T09:31:11.626-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">C#.Net</category><category domain="http://www.blogger.com/atom/ns#">GridView ASP.NET</category><title>Select GridView Row without using Select button</title><description>This code snippet Illustrate How to Select GridView Row without using Select Command button. &lt;br /&gt;
I think code can do better idea than description. check the snippet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="c-sharp" name="code"&gt;protected void Button1_Click(object sender, EventArgs e)
    {
        //identifying button
        Button gridBtn = (Button)sender;
       //selecting grid row
        GridViewRow gridRow = (GridViewRow)gridBtn.NamingContainer;
       //setting Index
        int selectedIndex = gridRow.DataItemIndex;
       // Setting Selected Index of GridView1
         GridView1.SelectedIndex = selectedIndex;
        //firing selected Index changed if you need
        //here I used to change color of selected rows
         GridView1_SelectedIndexChanged(GridView1, EventArgs.Empty);
        if (gridBtn != null)
        {
           //changing button text[/color]
            if (gridBtn.Text == "DeSelect")
            { gridBtn.Text = "Select"; }
            else
            { gridBtn.Text = "DeSelect"; }
        }

    }
    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        int sIndex = GridView1.SelectedIndex;
        if (GridView1.Rows[sIndex].BackColor == System.Drawing.Color.Red)
        {
            GridView1.Rows[sIndex].BackColor = System.Drawing.Color.White;
        }
        else
        {
            GridView1.Rows[sIndex].BackColor = System.Drawing.Color.Red;
        }

    }
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
ASPX section&lt;br /&gt;
&lt;br /&gt;
I add One Button field as Template field. and add Button text as "Select". when you click on select button in GridView, the selected Row become Red color.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="html" name="code"&gt;&amp;lt;asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
            DataSourceID="SqlDataSource1"&amp;gt;
            &amp;lt;columns&amp;gt;
                &amp;lt;asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /&amp;gt;
                &amp;lt;asp:BoundField DataField="Category" HeaderText="Category"
                    SortExpression="Category" /&amp;gt;
                &amp;lt;asp:BoundField DataField="Tags" HeaderText="Tags" SortExpression="Tags" /&amp;gt;
                &amp;lt;asp:TemplateField&amp;gt;
                    &amp;lt;itemtemplate&amp;gt;
                        &amp;lt;asp:Button ID="Button1" runat="server" Text="Select" onclick="Button1_Click" /&amp;gt;
                    &amp;lt;/ItemTemplate&amp;gt;
                &amp;lt;/asp:TemplateField&amp;gt;
            &amp;lt;/Columns&amp;gt;
        &amp;lt;/asp:GridView&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Preview of Output&lt;/b&gt;&lt;br /&gt;
You can Select or Deselect GridView Rows.&lt;br /&gt;
&lt;img src="http://img72.imageshack.us/img72/9930/selectb.jpg" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;
Thank you for Reading this code snippet.&lt;br /&gt;
Feel Free to comment. if you have any doubts let me know.&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2010/09/this-code-snippet-illustrate-how-to.html</link><author>noreply@blogger.com (Raju.M)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-8563144810889541159</guid><pubDate>Thu, 02 Sep 2010 20:52:00 +0000</pubDate><atom:updated>2010-09-02T13:55:17.536-07:00</atom:updated><title>Ajax AutoComplete in ASP.Net</title><description>Without using AjaxControlToolKit we can implement AutoComplete Extender using pure Ajax Call. This article is explaining how to do make AutoComplete Extender. &lt;br /&gt;
OnKeyUp event help you to fetch data from Database with Ajax call. Here one Handler.ashx handles the AJAX request form Client. I add a Class file to handle database operations to better coding practice. Below I am explaining  the database helper Class. Class have one method  &lt;b&gt;GetTable(string  sqlQuery)&lt;/b&gt; this return DataTable after fetching data from database. And also include Provide Class, this Class help to get SqlConnection string.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="html" name="code"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
/// &lt;summary&gt;
/// Summary description for DBHelper
/// &lt;/summary&gt;
public class DBHelper
{
    SqlConnection connection;
    SqlDataAdapter adapter;
    SqlCommand command;
    DataTable dataTable;
    public DBHelper()
    {
    }
    /// &lt;summary&gt;
    /// 
    /// &lt;/summary&gt;
    /// &lt;param name="sqlQuery"&gt;passing SQL Query here&lt;/param&gt;/// &lt;returns&gt;DataTable object is returned&lt;/returns&gt;
    public DataTable GetTable(string sqlQuery)
    {
        //creating new instance of Datatable
        dataTable = new DataTable();
        connection = Provider.GetConnection();
        command = new SqlCommand(sqlQuery, connection);
        //Open SQL Connection
        connection.Open();
            try
            {
                adapter = new SqlDataAdapter(command);
                adapter.Fill(dataTable);
            }
            catch
            { }
            finally
            {
                //Closing Sql Connection 
                connection.Close();
            }
        return dataTable;
    }
}
public class Provider
{
    public static SqlConnection GetConnection()
    {
        //creating SqlConnection
        return new SqlConnection(ConfigurationManager.AppSettings["sqlConn"]);
    }
} 

&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Now we can look into Handler file. When request come from Ajax Call from Client it passes the data into our Database helper Class, handler file hold the data in DataTable. Result data are formatted in a table and write in the context.  We can add  JavaScript function for select the data, here &lt;b&gt;api_helper.AddtoTaxtBox(selectedItem)&lt;/b&gt;is managing client section of data. Check Handler file &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="html" name="code"&gt;&lt;%@ WebHandler Language="C#" Class="Handler" %&gt;
using System;
using System.Web;
using System.Data;
public class Handler : IHttpHandler {
    public void ProcessRequest (HttpContext context) {

        HttpRequest request = HttpContext.Current.Request;
        //checking string null or empty
        if (!string.IsNullOrEmpty(request.QueryString["name"]))
        {
            string name=request.QueryString["name"];
            //creating instance of new database helper
            DBHelper objDBHelper = new DBHelper();
            //creating Sql Query
            string sqlQuery = string.Format("SELECT Name FROM User WHERE Name LIKE '{0}%'", name);
            //filling data from database
            DataTable dataTable = objDBHelper.GetTable(sqlQuery);

            string table = string.Empty;
            //table for hold data
            table = "&lt;table width='100%'&gt;";             string td = string.Empty;             //checking datatable                 if (dataTable.Rows.Count &gt; 0)                 {                     for (int i = 0; i &lt; dataTable.Rows.Count; i++)
                    {
                        //adding table rows
                        td += string.Format("&lt;tr&gt;&lt;td class='select' onclick='api_helper.AddtoTaxtBox(this.innerHTML)'&gt;{0}&lt;/td&gt;&lt;/tr&gt;
", dataTable.Rows[i][0].ToString());                     }                 }                 table += td + "&lt;/table&gt;";
                context.Response.Write(table);
        }
    }
    public bool IsReusable {
        get {
            return false;
        }
    }

}
&lt;/pre&gt;&lt;br /&gt;
Now we can check how Ajax works. On Textbox onKeyUp event call the ajax code. It send the entered value into server using ajax and result displayed in div control under the search textbox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="html" name="code"&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot;  CodeFile=&amp;quot;Default.aspx.cs&amp;quot; Inherits=&amp;quot;_Default&amp;quot; %&amp;gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;

&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;
&amp;lt;head runat=&amp;quot;server&amp;quot;&amp;gt;
&amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;

&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;
      .select{cursor:pointer;height:20px;color:red;}
      .select:hover{cursor:pointer;height:20px;color:black;background-color:#cccccc;}
      #myDiv{position:relative;top: -1px; left: 0px;width:150px; overflow:hidden;}
      #txtName{width:150px}
&amp;lt;/style&amp;gt;

&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
&amp;lt;div&amp;gt;

&amp;lt;asp:TextBox ID=&amp;quot;txtName&amp;quot; runat=&amp;quot;server&amp;quot; onkeyup=&amp;quot;api_helper.callAjax();&amp;quot;&amp;gt;&amp;lt;/asp:TextBox&amp;gt;
&amp;lt;div id=&amp;quot;myDiv&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;


&amp;lt;script language=&amp;quot;javascript&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;

            if (typeof (api_helper) == 'undefined') { api_helper = {} }


            api_helper.doAjax = function(HandlerUrl, displayDiv) {
                var Req; try { Req = new XMLHttpRequest(); } catch (e) { try { Req = new ActiveXObject(&amp;quot;Msxml2.XMLHTTP&amp;quot;); } catch (e) { try { xmlHttp = new ActiveXObject(&amp;quot;Microsoft.XMLHTTP&amp;quot;); } catch (e) { return false; } } } Req.onreadystatechange = function() { if (Req.readyState == 4) { var d = document.getElementById(displayDiv); d.innerHTML = Req.responseText; } }
                Req.open(&amp;quot;GET&amp;quot;, HandlerUrl, true); Req.send(null);
            }


            api_helper.callAjax = function() {
                var text = document.getElementById(&amp;quot;txtName&amp;quot;).value;
                if (text != &amp;quot;&amp;quot;) {
                    var requestUrl = &amp;quot;Handler.ashx?name=&amp;quot; + text;
                    var displayDiv=&amp;quot;myDiv&amp;quot;;
                    api_helper.doAjax(requestUrl, displayDiv);
                }
            }


            api_helper.AddtoTaxtBox = function(txt) {
                document.getElementById(&amp;quot;txtName&amp;quot;).value = txt;
                document.getElementById(&amp;quot;myDiv&amp;quot;).innerHTML = &amp;quot;&amp;quot;;
            }
&amp;lt;/script&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;

&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Thanks for reading this article and feel free to comment.&lt;br /&gt;
Tags Ajax AutoComplete, Ajax Example.&lt;br /&gt;
&lt;a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=3497545" style="display:none" rel="tag"&gt;CodeProject&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2010/09/ajax-autocomplete-in-aspnet.html</link><author>noreply@blogger.com (Raju.M)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-5604785139723386013</guid><pubDate>Thu, 08 Jul 2010 15:23:00 +0000</pubDate><atom:updated>2010-07-23T23:40:45.562-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">AJAX Control Toolkit</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">UpdateProgress</category><title>UpdateProgress Control</title><description>&lt;b&gt;This sample illustrate how to implement UpdateProgress Control in ASP.Net&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
UpdatePanel control enable partial page rendering in ASP.Net. using UpdateProgress control enable&amp;nbsp; status&amp;nbsp; when Updating UpdatePanel. UpdateProgress have ProgressTemplate, When updates is happen&amp;nbsp; UpdateProgress show the content in ProgressTemplate.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="html" name="code"&gt;&amp;nbsp; &amp;lt;asp:UpdateProgress ID="UpdateProgress1" AssociatedUpdatePanelID="UpdatePanel1" runat="server"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ProgressTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div style="color:Red;font-size:xx-large;"&amp;gt;Please wait ......&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ProgressTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/asp:UpdateProgress&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;AssociatedUpdatePanelID &lt;/b&gt;is enable which update is shown update process. Here i am displaying time in label control. When user click update button&amp;nbsp; status is shown in UpdateProgress control&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;protected void UpdateTime_Click(object sender, EventArgs e)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; //sleeps for 2 seconds 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Threading.Thread.Sleep(2000);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblDate.Text = DateTime.Now.ToString();
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;Full Source Code&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="html" name="code"&gt;&amp;lt;%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %&amp;gt;
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;
&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;
&amp;lt;head runat="server"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form id="form1" runat="server"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ScriptManager ID="ScriptManager1" runat="server"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/asp:ScriptManager&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:UpdateProgress ID="UpdateProgress1" AssociatedUpdatePanelID="UpdatePanel1" runat="server"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ProgressTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div style="color:Red;font-size:xx-large;"&amp;gt;Please wait ......&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ProgressTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/asp:UpdateProgress&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:UpdatePanel runat="Server" ID="UpdatePanel1" UpdateMode="Conditional"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ContentTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:Label ID="lblDate" runat="server"&amp;gt;&amp;lt;/asp:Label&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:Button ID="UpdateTime" runat="server" onclick="UpdateTime_Click" Text="Update" /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ContentTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/asp:UpdatePanel&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;

&lt;/pre&gt;&lt;b&gt;Server side code &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Reflection;
public partial class Default2 : System.Web.UI.Page
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void Page_Load(object sender, EventArgs e)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!IsPostBack)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblDate.Text = DateTime.Now.ToString();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void UpdateTime_Click(object sender, EventArgs e)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //sleeps for 2 seconds 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Threading.Thread.Sleep(2000);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblDate.Text = DateTime.Now.ToString();
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;Output &lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZUtCvGc-3CnmrpzihYPXgLvyzLQcNEgBafGY512CSY_hFtOXPm28KSKID6ptNm6PRdq-HadghZTm-MQGqYMiI5nmYu44RVqNjhole4wttpS45u4jlApB-CG4kJzhuaaoJ3OYBdVlPOtk/s1600/UpdateProgress.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZUtCvGc-3CnmrpzihYPXgLvyzLQcNEgBafGY512CSY_hFtOXPm28KSKID6ptNm6PRdq-HadghZTm-MQGqYMiI5nmYu44RVqNjhole4wttpS45u4jlApB-CG4kJzhuaaoJ3OYBdVlPOtk/s320/UpdateProgress.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;a href="http://cafekerala.com/makhaaiblogspot/UpdateProgress_Sample.rar"&gt;Download Source&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=3497545" style="display:none" rel="tag"&gt;CodeProject&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2010/07/updateprogress-control.html</link><author>noreply@blogger.com (Raju.M)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZUtCvGc-3CnmrpzihYPXgLvyzLQcNEgBafGY512CSY_hFtOXPm28KSKID6ptNm6PRdq-HadghZTm-MQGqYMiI5nmYu44RVqNjhole4wttpS45u4jlApB-CG4kJzhuaaoJ3OYBdVlPOtk/s72-c/UpdateProgress.jpg" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-2980654757094503429</guid><pubDate>Wed, 07 Jul 2010 23:24:00 +0000</pubDate><atom:updated>2010-07-07T16:24:00.062-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">IRequiresSessionState</category><category domain="http://www.blogger.com/atom/ns#">Session</category><title>How to get Session Variable in Class File</title><description>&lt;b&gt;How to get Session Variable in Class (.cs) File&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Normally Session is not accessible in Class file. when&amp;nbsp; one try to call Session in class file it return "Object reference not set to an instance of an object."  error description like " An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code." this error is thrown by  System.NullReferenceException. To access Session in class file Microsoft introduce a Interface &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.sessionstate.irequiressessionstate.aspx"&gt;&lt;b&gt;IRequiresSessionState&lt;/b&gt;&lt;/a&gt;, derived from &lt;b&gt;System.Web.SessionState&lt;/b&gt;&lt;br /&gt;
&lt;/br&gt;&lt;/br&gt;&lt;br /&gt;
&amp;nbsp;&lt;b&gt;The metadata of IRequiresSessionState&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;
namespace System.Web.SessionState
{
    // Summary:
    //     Specifies that the target HTTP handler requires read and write access to
    //     session-state values. This is a marker interface and has no methods.
    public interface IRequiresSessionState
    {
    }
}


&lt;/pre&gt;&lt;/br&gt;&lt;br /&gt;
IRequiresSessionState Specifies that the target HTTP handler requires read and write access to  session-state values. IRequiresSessionState has no methods.&lt;br /&gt;
&lt;/br&gt;&lt;br /&gt;
&lt;b&gt;How to Use&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/br&gt;&lt;br /&gt;
&lt;pre name="code" class="csharp"&gt;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
/// &lt;summary&gt;
/// Summary description for GetSessionHelper
/// &lt;/summary&gt;
public class SessionHelper : IRequiresSessionState
{
    public SessionHelper()
    {
        //
        // TODO: Add constructor logic here
        //
    }
    /// &lt;summary&gt;
    /// Get Session values
    /// &lt;/summary&gt;
    /// &lt;param name="key"&gt;session key&lt;/param&gt;    /// &lt;returns&gt;object value&lt;/returns&gt;
    public object GetSession(string key)
    {
        //check session 
        if (HttpContext.Current.Session[key] != null)
        {
            //return session value
            return HttpContext.Current.Session[key];
        }
        else
        {
            //return empty string
            return string.Empty;
        }
    }
}


&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Calling SessionHelper Class&lt;/b&gt;&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Creating object of SessionHelper Class
        SessionHelper objSessionHelper = new SessionHelper();
        //setting session value in a variable
        string sessionValue = objSessionHelper.GetSession("test").ToString();
        //writing session value in Page
        Response.Write(sessionValue);
    }
}


&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2010/07/how-to-get-session-variable-in-class.html</link><author>noreply@blogger.com (Raju.M)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-2340158017776565428</guid><pubDate>Tue, 06 Jul 2010 05:07:00 +0000</pubDate><atom:updated>2010-07-05T22:07:40.598-07:00</atom:updated><title>Get Value of Dynamically generated TextBox</title><description>how to get value of dynamically generated TextBox using javascript&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
public partial class placeholderissue : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            if (TextBox1.Text != string.Empty)
            {
                int count = 0;
                int.TryParse(TextBox1.Text, out count);
                
                for (int i = 0; i &amp;lt; count; i++)
                {
                    TextBox txt = new TextBox();
                    txt.ID = "dynamicText" + i.ToString();
                    if (PlaceHolder1.FindControl(txt.ID) != null)
                    {
                        PlaceHolder1.Controls.Add(txt);
                    }
                }
            }
        }
      
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        if (TextBox1.Text != string.Empty)
        {
            int count=0;
            int.TryParse(TextBox1.Text,out count);
            for (int i = 0; i &amp;lt; count; i++)
            {
                TextBox txt = new TextBox();
                txt.ID = "dynamicText" + i.ToString();
                PlaceHolder1.Controls.Add(txt);
            }
        }
    }
}



&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HTML   &lt;br /&gt;
&lt;pre class="html" name="code"&gt;&amp;lt;%@ Page Language="C#" AutoEventWireup="true" CodeFile="placeholderissue.aspx.cs" Inherits="placeholderissue" %&amp;gt;

&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;

&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;
&amp;lt;head runat="server"&amp;gt;
    &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;form id="form1" runat="server"&amp;gt;
    &amp;lt;div&amp;gt;
        &amp;lt;asp:TextBox ID="TextBox1" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt;
        &amp;lt;asp:Button ID="Button1"
            runat="server" Text="Button" onclick="Button1_Click" /&amp;gt;
        &amp;lt;br /&amp;gt;
        &amp;lt;asp:PlaceHolder ID="PlaceHolder1" runat="server"&amp;gt;&amp;lt;/asp:PlaceHolder&amp;gt;
        &amp;lt;input id="Button2" type="button" value="button" onclick="GetTextBoxValue();" /&amp;gt;
        &amp;lt;script language="javascript"&amp;gt;
            function GetTextBoxValue() {
                var count = document.getElementById("TextBox1").value;
                if (count &amp;gt; 0) {
                    for (i = 0; i &amp;lt; count; i++) {
                        alert(document.getElementById("dynamicText" + i).value);
                    }
                }
            }
        &amp;lt;/script&amp;gt;
    &amp;lt;div&amp;gt;
    &amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;


&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://cafekerala.com/makhaaiblogspot/getDyamictexBoxValue.rar"&gt;Source Code&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2010/07/get-value-of-dynamically-generated.html</link><author>noreply@blogger.com (Raju.M)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6236973097452836208.post-5600575041170431114</guid><pubDate>Tue, 06 Jul 2010 02:40:00 +0000</pubDate><atom:updated>2010-07-05T19:40:41.689-07:00</atom:updated><title>Insert Image in to Database</title><description>&lt;b&gt;Insert Image in to Database &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
datatype of image in database is Byte[], so we insert image byte in to Database&lt;br /&gt;
&lt;br /&gt;
FileUploader controls is used to select file, FileUploader control have a property FileBytes it return byte array (byte[]) of image, this Byte[] is stored in dataBase&lt;br /&gt;
&lt;br /&gt;
example&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Text;
using System.Data.SqlClient;
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       
    }
    protected void ImageUploadToDataBase(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("Your Connection string");
        try
        {
            con.Open();
            byte[] imageByte = FileUpload1.FileBytes;
            SqlCommand cmd = new SqlCommand("INSERT INTO table (image,imagename) VALUES (@0,@1))", con);
            object[] cmdParams = new object[2];
            cmdParams[0] = imageByte;
            cmdParams[1] = "Name of Image";
            for (int i = 0; i &lt; cmdParams.Length; i++)
            {
                cmd.Parameters.AddWithValue(i.ToString(), cmdParams[i]);
            }
            cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
        }
        finally { con.Close(); }
       
    }
    
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;OpenSource.Net&lt;/div&gt;</description><link>http://makhaai.blogspot.com/2010/07/insert-image-in-to-database.html</link><author>noreply@blogger.com (Raju.M)</author><thr:total>0</thr:total></item></channel></rss>