Question

i wan to bind grid view with different kinds of conditions show here i'm use (dynamic)null concept for query declaration but at end of rest i can't getting field that associated with query.

here i put my code :

 public void FillGrid(string GroupByText, string ColumnName, string SearchText)
    {
        using (DataClassesDataContext db = new DataClassesDataContext())
        {
            var query = (dynamic)null;
            switch (GroupByText)
            {
                case "Enquiry":
                    query = db.Enquiries.Where(i => i.enttype_id.Equals("1")).OrderByDescending(i => i.Created_date).Select(i => new
                    {
                        Ref_no = i.Ref_no,
                        Name = db.Parties.Where(p => p.Id.Equals(i.party_id)).Select(p => p.Name).SingleOrDefault(),
                        StatusName = db.Status.Where(s => s.Id.Equals(i.status_id)).Select(s => s.StatusName).SingleOrDefault(),
                        CategoryName = db.Categories.Where(c => c.Id.Equals(i.category_id)).Select(c => c.category_name).SingleOrDefault(),
                        IsUregent = i.IsUregent,
                        Created_date = i.Created_date
                    }).FilterForColumn(ColumnName,SearchText).ToList();
                    break;
                case "Visit":
                    query = db.Enquiries.Where(i => i.enttype_id.Equals("2")).OrderByDescending(i => i.Created_date).Select(i => new
                     {
                         Ref_no = i.Ref_no,
                         Name = db.Parties.Where(p => p.Id.Equals(i.party_id)).Select(p => p.Name).SingleOrDefault(),
                         StatusName = db.Status.Where(s => s.Id.Equals(i.status_id)).Select(s => s.StatusName).SingleOrDefault(),
                         CategoryName = db.Categories.Where(c => c.Id.Equals(i.category_id)).Select(c => c.category_name).SingleOrDefault(),
                         IsUregent = i.IsUregent,
                         Created_date = i.Created_date
                     }).FilterForColumn(ColumnName,SearchText).ToList();
                    break;
                default:
                    query = db.Enquiries.OrderByDescending(i => i.Created_date).Select(i => new
                    {
                        Ref_no = i.Ref_no,
                        Name = db.Parties.Where(p => p.Id.Equals(i.party_id)).Select(p => p.Name).SingleOrDefault(),
                        StatusName = db.Status.Where(s => s.Id.Equals(i.status_id)).Select(s => s.StatusName).SingleOrDefault(),
                        CategoryName = db.Categories.Where(c => c.Id.Equals(i.category_id)).Select(c => c.category_name).SingleOrDefault(),
                        IsUregent = i.IsUregent,
                        Created_date = i.Created_date
                    }).FilterForColumn(ColumnName, SearchText).ToList();
                    break;
            }
            int count = 0;
            DataSet myDataSet = new DataSet();
            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("Ref_no", typeof(string)));
            dt.Columns.Add(new DataColumn("Name", typeof(string)));
            dt.Columns.Add(new DataColumn("StatusName", typeof(int)));
            dt.Columns.Add(new DataColumn("CategoryName", typeof(string)));
            dt.Columns.Add(new DataColumn("IsUregent", typeof(bool)));
            dt.Columns.Add(new DataColumn("Created_date", typeof(DateTime)));
            foreach (var item in query)
            {
                if (item != null)
                {
                    DataRow dr = dt.NewRow();
                    dr["Ref_no"] = item.//not founding field that
                }
            }
        }
    }
Was it helpful?

Solution

what is the return type of .FilterForColumn(ColumnName,SearchText) ? if it does just filtering, without changing the Data Type, i think you can use this:

var query = Enumerable.Repeat(new
        {
            Ref_no = string.Empty,
            Name = string.Empty,
            StatusName = default(int),
            CategoryName = string.Empty,
            IsUregent = default(bool),
            Created_date = default(DateTime)
        }, 0)
        .ToList();

instead of this:

var query = (dynamic)null;

and probably this can solve your problem

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top