Solved

Dynamically binding data to a gridview.

Posted on 2007-04-03
4
246 Views
Last Modified: 2013-11-07
Hello Experts,

We are using Model View Controller Framework in our ASP.net Application developed in C#,MS SQL Server.
For Eg. in one of my ASPX page I am binding data to the grid as shown below:

protected void LoadTasks()
        {
            lstTaskLst.ListDataSource = TaskController.GetAllTasks(true,CurrentUser);
        }

Here is the code in my Controller:
public static List<Task> GetAllTasks(bool active,UserInfo assignedTo)
        {
            return TaskDAL.SelectAllToUser(active, assignedTo.UserID);
        }

Here is code from my DAL:

public static List<Task> SelectAllToUser(bool? active, int assigned_to)
        {
            List<Task> tasks = new List<Task>();
            Task currenttask = null;
GenericDatabase db = new GenericDatabase(z360.Configuration.CurrentConceptConnectionString(), );
            DbCommand dbCommand = db.GetStoredProcCommand("Calendar_Task_sel_only_By_User");

            IDataReader dbReader;

            if (active == null)
                db.AddInParameter(dbCommand, "active", DbType.String, DBNull.Value);
            else
                db.AddInParameter(dbCommand, "active", DbType.String, active);

            db.AddInParameter(dbCommand, "assigned_to", DbType.Int32, assigned_to);

            dbReader = db.ExecuteReader(dbCommand);
            while (dbReader.Read())
            {
                currenttask = LoadFromDataReader(dbReader);
                if (currenttask != null)
                    tasks.Add(currenttask);
            }
            dbReader.Close();

            if (tasks.Count == 0)
                tasks = null;

       return tasks;
    }

And in LoadFromDataReader I am reading all the data from the datareader



It is working absolutely fine. But I have some other issue now.  Now instead of binding data from the Stored Procedure which is currently returning a list, is there a way I can bind it to a SQL Statement.  The reason is I have a wizard control where users will pick whatever columns they want.

Appreciate if you could throw some light on this.
0
Comment
Question by:rowmark
  • 2
4 Comments
 
LVL 14

Expert Comment

by:steveberzins
ID: 18847099
you can bind to a DataSet, why not just do that?
should give you the flexibility you're looking for...
0
 
LVL 21

Expert Comment

by:Yurich
ID: 18847270
you can parameterize your stored procedure and return the number of columns depending on your wizard's outcome.

Also, if you use standard DbCommand object, there is a property CommandText, like

DbCommand db = conn.CreateCommand();
db.CommandText = "SELECT CustomerName, " + SomeColumnName + ", ...";

cheers,
yurich
0
 

Author Comment

by:rowmark
ID: 18847968
Thanks steveberzins and Yurich.

Is there any sample code I can look at and try.

Thanks
0
 
LVL 21

Accepted Solution

by:
Yurich earned 500 total points
ID: 18854526
I don't have any ready to go samples. Where do you need more assistance: with a data set, parameterizing your stored procedure, or using an ad-hoc query in your application?
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question