Click here to Skip to main content
15,896,727 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
C# code :
List<string> listOfWeeks = new List<string>();
C#
dgvWeeklyReport.DataSource = listOfWeeks;
             dgvWeeklyReport.DataBind();


dgvWeeklyReport is datagridview



Design :

XML
<asp:GridView ID="dgvWeeklyReport" runat="server" CssClass="table table-bordered table-striped"
                               AutoGenerateColumns="false">
                               <Columns>
                                   <asp:BoundField HeaderText="Weeks" />
                                    <asp:BoundField HeaderText="Total Fee" />
                               </Columns>
                           </asp:GridView>


I wanted to add list of weeks in a column of gridview using List<>. I got the solution and have added here
Posted
Updated 10-Sep-14 20:13pm
v3
Comments
Gihan Liyanage 3-Sep-14 5:53am    
Do you have any questions?
ChintanShukla 3-Sep-14 6:54am    
Use listOfWeeks.AddRange(value); To set value you can write a Linq query
[no name] 3-Sep-14 7:23am    
what error you are getting
[no name] 3-Sep-14 9:38am    
BoundField required DataText Field to bind the data. and where is it in you List<string> data???
That's not possible
[no name] 5-Sep-14 0:31am    
could you please explain your issue (what error you have getting) another thing bound field should be with DataText field

1 solution

DataTable NewTable = new DataTable();
NewTable.Columns.AddRange(new DataColumn[3] { new DataColumn("WeekNo", typeof(string)), new DataColumn("Week", typeof(string)), new DataColumn("Amount", typeof(string)) });
context = new TMSEntities();
var startOfFirstWeek = startdate.AddDays((1 - (int)(startdate.DayOfWeek)) - 1);
var weeks =
Enumerable
.Range(0, 54)
.Select(i => new
{
weekStart = startOfFirstWeek.AddDays(i * 7)
})
.TakeWhile(x => x.weekStart <= enddate)
.Select(x => new
{
x.weekStart,
weekFinish = x.weekStart.AddDays(6)
}).Select((x, i) => new
{
x.weekStart,
x.weekFinish,
weekNum = i + 1
});
List<string> dateinterval = new List<string>();
List<string> amt = new List<string>();
List<string> weekno = new List<string>();
foreach (var item in weeks)
{
DataRow dr = NewTable.NewRow();
double weekamt = 0;
string date1, date2;
int count = weeks.Count();
if (item.weekNum == 1)
{
date1 = startdate.ToString();
date2 = item.weekFinish.ToString();
}
else if (count == item.weekNum)
{
date1 = item.weekStart.ToString();
date2 = enddate.ToString();
}
else
{
date1 = item.weekStart.ToString();
date2 = item.weekFinish.ToString();
}
dateinterval.Add(date1 + "-" + date2);

DateTime d1 = Convert.ToDateTime(date1);
DateTime d2 = Convert.ToDateTime(date2);
string wname = d1.Date.ToShortDateString() + " - " + d2.Date.ToShortDateString();
dr.SetField(1, wname);
var frstday = (int)CultureInfo.CurrentCulture.Calendar.GetDayOfWeek(d2);
int wno = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(d2.AddDays(4 - (frstday == 0 ? 7 : frstday)), CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Sunday);
weekno.Add(wno.ToString());

dr.SetField(0, wno.ToString());
var query = (from FeeCollection in context.tbl_FeeCollection
where FeeCollection.Createddatetime >=d1 && FeeCollection.Createddatetime <= d2
select (double?)FeeCollection.Amount).Sum()??0;
string q = query.ToString();
if (String.IsNullOrWhiteSpace(q))
{
q = "0";
}
weekamt = Convert.ToDouble(q);
amt.Add(weekamt.ToString());
dr.SetField(2, weekamt.ToString());
NewTable.Rows.Add(dr);
}
return NewTable;



Add this NewTable as a DataSource to gridview.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900