C# ASP.NET Binding Controls via Generic Method

Posted by OverTech on Stack Overflow See other posts from Stack Overflow or by OverTech
Published on 2010-04-30T20:35:11Z Indexed on 2010/04/30 20:37 UTC
Read the original article Hit count: 269

Filed under:
|
|
|

I have a few web applications that I maintain and I find myself very often writing the same block of code over and over again to bind a GridView to a data source. I'm trying to create a Generic method to handle data binding but I'm having trouble getting it to work with Repeaters and DataLists.

Here is the Generic method I have so far:

public void BindControl<T>(T control, SqlCommand sql) where T : System.Web.UI.WebControls.BaseDataBoundControl
    {
        cmd = sql;
        cn.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        if (dr.HasRows)
        {
            control.DataSource = dr;
            control.DataBind();
        }
        dr.Close();
        cn.Close();
    }

That way I can just define my CommandText then make a call to "BindControls(myGridView, cmd)" instead of retyping this same basic block of code every time I need to bind a grid.

The problem is, this doesn't work with Repeaters or DataLists. Each of these controls inherit their respective "DataSource" and "DataBind" methods from different classes. Someone on another forum suggested that I implement an interface, but I'm not sure how to make that work either.

The GridView, Datalist and Repeater get their respective "DataBind" methods from BaseDataBoundControl, BaseDataList, and Repeater classes. How would I go about creating a single interface to tie them all together? Or am I better off just using 3 overloads for this method?

  • Dave

© Stack Overflow or respective owner

Related posts about c#

Related posts about ASP.NET