Archive

Author Archive

So you are looking to connect with people like you…

February 13, 2008 Leave a comment

Maybe the best way is to start your own group.    And no, I don’t mean therapy group!

When I relocated to the Central Coast, I wanted to see how many .NET developers there were here because that was my specialty and something I was interested in.   In Los Angeles where I had lived before, it was not uncommon to find several “User Groups”…groups of people who shared a common interest that got together once a month to talk about what they are interested in.   So I started hunting around for a User Group here.

I couldn’t find one, although certainly there is SLOCAMA, and SLOBytes, there was no .NET or even a general “programming” User Group.   So I started asking around, and it was hard for me to explain to people what exactly it was I was trying to accomplish.

So I started my own.   In November of 2006, I founded the San Luis Obispo .NET User Group.  Now we are 40+ members strong and meet once a month.   A typical meeting will generally consist of pizza or pasta or panda express, a 90 minute to 2 hour presentation by a member or an outside speaker on a topic we are interested in, and then everyone hangs around to chat.   It’s a great way for all of us to expand our knowledge and share our ideas.

And the reality is, it wasn’t that hard to get it started.  You basically need two things:  a conference room, and a projector.   In most cases, you can find conference rooms at banks, accounting firms, there are many local places that you can get one.   In fact, the San Luis Business Center will rent one to you, and KCBX.NET will rent you one with a projector!   Granted, you might spend $80 a meeting, but the benefits far outweigh the cost.   If you’re lucky like we are, you have someone in the group with access to a room and then you don’t have that cost either.

Then you need a vision, a purpose.  In our meetings, it’s .NET programming.   Yours might be databases, or design, or even electrical engineering.  The topic and vision don’t matter as long as you have one.  And if you have one, I guarantee that there are others out there who share it.

Finally, you need speakers.  Our group has only had two or three people from outside come in and speak.  For the most part, our own members have been willing to step up and investigate something and come back with their findings.   None of us are professional speakers, and it’s very laid back and low key and about the sharing of ideas.

I placed a single comment in the Tribune with the weekly Central Coast Technology article written by Dan Logan and set up my first meeting.   Fourteen people attended, and we’ve just grown from there.  Dan continues to be supportive, and groups like Softec have stepped up to offer their support as well in the interest of “Community Education”.

It’s really that easy to start a group.   Get a room, a topic, a projector if you need it, a speaker (even if it’s you), some food, and set up shop.  Even if only two people show up the first time, word will spread and your group will grow.

It’s definitely worth your time and effort.

 

Robert Hope, Founder

San Luis Obispo .NET User Group

Categories: .NET User Group, SLO Local

Central Coast Code Camp is a Reality!

May 27, 2007 Leave a comment

Hi all,

We’ve confirmed our location for the Central Coast Code Camp (http://www.centralcoastcodecamp.com) and the date as well!  We had to move the date because of some facility issues, but the date is now 9-22-07 and 9-23-07 at the Embassy Suites in San Luis Obispo, CA.

Also, the old site at bostondotnet that used to list all the code camps is gone, so I’ve thrown one up that hopefully people will start using at the Code Camp List (http://www.codecamplist.com).

Please register for our code camp and come give a talk!

Rob

Categories: Code Camp

Making Your LinkButton look (and work) like an ImageButton

May 9, 2007 Leave a comment

Hey there,

I don’t know if you’ve noticed, but style sheets tend to handle an <input type=image/> a lot differently than an <img/> tag.   And that becomes a problem in .NET if you’ve built a webform that depends on a link to be an image.  

The LinkButton control doesn’t support an ImageUrl.   It renders like you’d expect, with an <a/> tag surrounding some text, and the Href on that <a/> tag pointed at a __doPostBack function of some type.  But there’s no way to tell it to use an image as the text, without setting the text manually through the designer or maybe with some code. 

On the other hand, the ImageButton control only supports images.   It renders differently as well, using an <input type=image/> tag as opposed to an <a/> tag.  If you’ve styled expecting that <input/> to be an <a/>, you could be in for some time-wasting CSS fun.

In addition, you can’t just easily switch between the two on the page if you want to go from an ImageButton to a LinkButton, because the attributes aren’t consistent regarding the use of images.

My solution to this was to create my own extended LinKButton that supports an ImageUrl.   Here’s how I did it.

First, I added an ImageUrl property to my derived LinkButton: 

public class MyImageButton : LinkButton

{

private string _imageUrl;
     [Editor(“System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”, typeof(UITypeEditor))]
     [DefaultValue(“”)]
     [UrlProperty]
     [Bindable(true)]
     public string ImageUrl
     {
          get { return _imageUrl; }
          set { _imageUrl = value; }
    }

}

Notice a couple of things:  I set the editor and the designer attributes such that my ImageUrl will behave in the Studio the same way that the ImageUrl on an ImageButton would work.  This helps to make switching back and forth easier (although with this in place I’d never use an ImageButton again; for me there’s simply no need).

Once I have that, I am going to override OnPreRender: 

public class MyImageButton : LinkButton

{

private string _imageUrl;
     [Editor(“System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”, typeof(UITypeEditor))]
     [DefaultValue(“”)]
     [UrlProperty]
     [Bindable(true)]
     public string ImageUrl
     {
          get { return _imageUrl; }
          set { _imageUrl = value; }
    }

protected override void OnPreRender(EventArgs e)

       if (!string.IsNullOrEmpty(this.ImageUrl))
       {
               if (this.ImageUrl.Trim().Length > 0)
               {
                       string cssClass = string.Empty;
                       if (!string.IsNullOrEmpty(CssClass))
                      {

                                cssClass = ” class=\”” + CssClass + “\”” 

                       }

                       this.Text = “<img src=\”” + this.ImageUrl + “\” ” + cssClass + “/>”
                       this.ImageUrl = string.Empty;                     
               }

     }
     base.OnPreRender(e);     

}

In this step, if I have an ImageUrl, I am using code to set the Text property of my LinkButton, and then erasing the ImageUrl so that it will render with an <img/> tag in the text of the <a/>.   I’m also taking care to apply the CssClass appropriately to the <img/> tag so that styles will work as expected, the way they would on an ImageButton (assuming the ImageButton was able to output an <img/> instead of an <input/>).   With a little more care I could even bring over things like AlternateText if I chose.

With this in place, now I can style consistently between my Text-based and my Image-based buttons without having to worry about inconsistencies in the rendering of the control.

Have fun,

Rob

Categories: ASP.NET Code