Recently I was scratching my head at this error from the .NET Framework
DataBinding: ‘MyApp.vo.customVO’ does not contain a property with the name ‘Name’
I was stumped because my custom VO class did in fact have a public property called Name. After many trials and tribulations I figured out that .NET didn’t like how I structured my custom class.
Here is what my original custom class looked like.
namespace MyApp.vo
{
public class customVO
{
public Int32 id = 0;
public DateTime time = new DateTime();
public string Name = string.Empty;
public string DeviceType = string.Empty;
public string ObjectIDs = string.Empty;
}
}
Luckily I have JetBrains ReSharper installed, and it suggested using C#’s Auto-Implemented properties. This is the one thing I hadn’t thought about trying, and it ended up being the fix! My new custom VO class now looks like this.
namespace MyApp.vo
{
public class customVO
{
public Int32 id { get; set; }
public DateTime time { get; set; }
public string DeviceType { get; set; }
public string ObjectIDs { get; set; }
public string Name { get; set; }
}
}
So if you find yourself running into this error while trying to DataBind a collection of custom classes to a ListBox or similar control, have a look at your custom class and see if you can convert it over to using auto-implement properties as well.
Now I’m not suggesting this is the only way to DataBind a List of custom classes to a ListBox, but it solved my problem and let me do direct databinding from my service call without having to do any pre-processing on my list.
Hope this helps someone else.
Tags: .NET framework, asp.net, auto-implemented, auto-implemented-properties, C#, csharp, custom class, DataBind, DataSource, properties, VO
Posted in .net, C#, Visual Studio, development, microsoft, tips and tricks | 3 Comments »
Here’s another SQL Server 2005 geek out moment, a CLR SPROC that tweets to Twitter. Big shoutout to Danny Battison for sharing the C# code to post to Twitter. This is what got me started on the C# side of things. Also, you can skip all my ramblings here and just download code here and fire it up. The zip file contains all the source code, the compiled assembly file, and install.sql that shows you how to hook this up.
Being the SQL junky that I am, I was interested in trying out SQL Server’s new CLR Stored Procedures. A CLR sproc is a stored procedure that is able to use .net code that you’ve compiled into an assembly file. For you classic ASP heads out there, think of the ASP page being the sproc, and the .net assembly being your COM object ( cringe, let’s talk about classic ASP ). While there are plenty of great articles on writing CLR stored procedures, I’m going to breeze through the code that makes up this project.
First make a .net class library that will be compiled into an assembly file.
using System;
using Microsoft.SqlServer.Server;
using System.Data.SqlTypes;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
/// <summary>
/// This assembly will be used by a SQL2005 SPROC to communicate
/// with twitter.com
/// </summary>
public sealed class tweetsproc
{
/*
* TWITTER CODE BORROWED FROM :
* http://www.dreamincode.net/code/snippet2556.htm
*
* A function to post an update to Twitter programmatically
* Author: Danny Battison
* Contact: gabehabe@hotmail.com
*/
/// <summary>
/// Post an update to a Twitter acount
/// </summary>
/// <param name="username">The username of the account</param>
/// <param name="password">The password of the account</param>
/// <param name="tweet">The status to post</param>
[Microsoft.SqlServer.Server.SqlProcedure(Name = "PostTweet")]
//public static void PostTweet( string username, string password, string tweet)
public static void PostTweet( SqlString username,
SqlString password,
SqlString tweet)
{
try
{
// encode the username/password
string user = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(username.ToString() + ":" + password.ToString()));
// determine what we want to upload as a status
byte[] bytes = System.Text.Encoding.ASCII.GetBytes("status=" + tweet.ToString());
// Create a WebPermission.
WebPermission myWebPermission1 = new WebPermission();
// Allow Connect access to the specified URLs.
myWebPermission1.AddPermission(NetworkAccess.Connect,new Regex("http://www\\.twitter\\.com/.*",
RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Singleline));
myWebPermission1.Demand();
// connect with the update page
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://twitter.com/statuses/update.xml");
// set the method to POST
request.Method = "POST";
request.ServicePoint.Expect100Continue = false; // thanks to argodev for this recent change!
// set the authorisation levels
request.Headers.Add("Authorization", "Basic " + user);
request.ContentType = "application/x-www-form-urlencoded";
// set the length of the content
request.ContentLength = bytes.Length;
// set up the stream
Stream reqStream = request.GetRequestStream();
// write to the stream
reqStream.Write(bytes, 0, bytes.Length);
// close the stream
reqStream.Close();
// Let's get the Response from Twitter
var webresp = request.GetResponse();
// Let's read the Response
var sread = new StreamReader( webresp.GetResponseStream() );
// Use SqlContext to return data to the QueryAnalyzer results window
SqlContext.Pipe.Send( sread.ReadToEnd() );
}
catch (Exception exc)
{
// send error back
SqlContext.Pipe.Send(exc.Message);
}
}
}
Here’s the app.config for this assembly.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<trust level="Full" processRequestInApplicationTrust="true" originUrl="" />
</system.web>
</configuration>
Once you build this project, you should have your assembly ( tweetsproc.dll ) which will be used by your CLR Sproc. Now it’s time to do some SQL server work.
Enable CLR access for SQL server
EXEC sp_configure @configname = 'clr enabled', @configvalue = 1
RECONFIGURE WITH OVERRIDE
GO
Create the SQL Assembly
CREATE ASSEMBLY tweetsproc_clr_assembly from 'C:\Users\eric\Desktop\blog\tweetsproc.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS
GO
Create your SPROC
CREATE PROC tweetsproc_tweet( @username as nvarchar(50),
@password as nvarchar(50),
@tweet as nvarchar(140)
)
AS
-- [Assembly Name].[Class Name].[CLR function Name]
EXTERNAL NAME tweetsproc_clr_assembly.tweetsproc.PostTweet
GO
Tweet from a sproc
EXEC tweetsproc_tweet 'TwitterUsername', 'TwitterPassword', 'Hey @ericfickes, I''m tweeting from my database too!'
Running this sproc returns the XML response from Twitter.

Tweetsproc returns the full Twitter response
That’s one sample CLR SPROC in the bank! Feel free to download this code and try it out yourself. I’d love to get some feedback on anybody looking to use this for real. While tweeting from a stored procedure probably isn’t a hot topic for anybody, this is a nice teaser for what you can do with CLR sprocs now.
Download code here.
Inside this zip you’ll find this.
- install.sql is everything you need to install this on your database
- tweetsproc.dll is the twitter assembly used by the sproc
- tweetsproc folder is the .net class library project

Everything you need to get TWEETING from a sproc
Tags: .net, .net assembly, .net Common Language Runtime, C#, CLR, CLR SPROC, sproc, sql server 2005, stored procedure, tweet, twitter
Posted in .net, C#, database, microsoft, sql, tips and tricks, tsql, twitter | 12 Comments »
I love C#, but miss the simplicity of PHP sometimes. Specifically when dealing with collections. Recently I ran into a situation where PHP’s implode would have been perfect, but I wasn’t able to find any quick and easy built in solution.
I would like to be able to do this
string id_list = implode( ",", mySortedList.Keys );
I’m not aware of any built in ways to do this, so I wrote the following helper function.
///
/// Pass in a SortedList and this will return a string containing a delimited
/// list of keys separated by delim
///
///
///
/// key1{DELIM}key2{DELIM}keyN
public static string SortedListKeysToDelimList(SortedList sl, string delim)
{
StringBuilder sb_keys = new StringBuilder();
foreach (DictionaryEntry dl in sl)
{
sb_keys.Append( dl.Key.ToString() );
// append DELIM only if we're NOT on the last entry
if (dl.Key != sl.GetKey(sl.Keys.Count - 1))
{
sb_keys.Append( delim );
}
}
return sb_keys.ToString();
}
If there is any better way to do this, please leave me a comment.
Tags: asp.net, C#, implode, php, SortedList
Posted in .net, C#, php | 4 Comments »
I finally got my MCP Welcome Kit from Microsoft.

Tags: C#, MCP, Microsoft Certified Professional
Posted in .net, C#, microsoft | No Comments »