Need a simple CRM and Project Management system?
Check out JobNimbus - CRM for Contractors and Service Professionals.

ObjectDataSource TypeName with Constructor Parameters

Say you have a class for something like a Data Access Layer but the default constructor of the class has a required parameter. For instance, something like this:

public class MyDataClass
{
    public MyDataClass(string sConnectionString)
    {
        // default constructor contains a parameter
        // so we need to handle this for the ObjectDataSource.
    }
 
    public int SelectCount()
    {
        // get count for pagination
        return 1;
    }
 
    public DataTable SelectAll(string sortType, int startRowIndex, int maximumRows)
    {
        // get data from data source and return as DataTable.
        return new DataTable();
    }
}

By default, the ObjectDataSource requires a parameterless default constructor on the TypeName class to instantiate. To solve this problem, you need to implement the OnObjectCreating event for the ObjectDataSource. Here is an example of how you might set up your ObjectDataSource in the HTML source view:



<asp:ObjectDataSource ID="ods1" runat="server" 
    EnablePaging="true" 
    OnObjectCreating="ods1_ObjectCreating"
    SelectCountMethod="SelectCount"
    SelectMethod="SelectAll" 
    TypeName="MyDataClass">
</asp:ObjectDataSource>

Then implement the OnObjectCreating event to set the TypeName object to an instance using the constructor:

protected void ods1_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
{
    string sConnectionString = "Put a connection string here";
    MyDataClass myDataClass = new MyDataClass(sConnectionString);
    // set ods object
    e.ObjectInstance = myDataClass;
}

Thanks

I don't know why gems like these are so hidden on the internet. Thank you so much.

This is exactly what I needed !

Thanks !

Rico