Posted: 9/3/2010
Hello ,
i am new in development,
i am fetching data through a query from database
Ex: Select CompID, CompTitle, Comp_Name, Address, RecievedDate, ResolvedDate From TblComplaints
I am stored data in a datatable at my DAL layer,
And on my GUI page bind this data table with a repeater, Now i want to add a new field NumberOfDays
NumberOfDays=ResolvedDate-RecievedDate
for each row in data table, How can i get this.
Please help me.
Hi,
You can calculate NoOfDays on ItemDataBound event of repeater control.
Put a Literal inside a repeater in ItemTemplate.
protected void rptData_ItemDataBound(object sender, RepeaterItemEventArgs e) {
Literal litNoOfDays = (Literal)e.Item.FindControl("litNoOfDays");
DateTime dt1 = ResolvedDate;
DateTime dt2 = RecievedDate;
int NumberOfDays ;
TimeSpan ts = dt1 - dt2;
NumberOfDays=ts.Days;
litNoOfDays.Text= NumberOfDays.ToString();
}
Hope this helps.
Thanks,
Sumit
Thanks for your support
<ItemTemplate> <tr style="background-color:InactiveBorder;"> <td style="width:100px;"><asp:Literal ID="lblCompid" runat="server" Text='<%#Eval("Comp_id") %>'/></td> <td style="width:450px;"><%#DataBinder.Eval(Container, "DataItem.comp_title")%></td> <td style="width:100px;"><%#DataBinder.Eval(Container, "DataItem.im_ondate","{0:d}")%></td> <td style="width:140px;"><%#DataBinder.Eval(Container, "DataItem.comp_state")%></td> <td style="width:60px;"><asp:Literal ID="litNoOfDays" runat="server"></asp:Literal> </td> <td style="width:60px;"><%#Eval("Comp_Status") %></td> </tr> </ItemTemplate>
Problem is now more serious, how can get these dates for each row.
Hi Vasim,
vasim said: user="Vasim Siddiqui"] RecievedDate, ResolvedDate
user="Vasim Siddiqui"] RecievedDate, ResolvedDate
You already mentioned in your first post that you are getting those two dates from db so what is the issue ? You can just get as you are getting other like "DataBinder.Eval(Container, "DataItem.comp_title")"
Raghav
Posted: 9/4/2010
vasim said: user="Vasim Siddiqui"]Thanks for your support <ItemTemplate> <tr style="background-color:InactiveBorder;"> <td style="width:100px;"><asp:Literal ID="lblCompid" runat="server" Text='<%#Eval("Comp_id") %>'/></td> <td style="width:450px;"><%#DataBinder.Eval(Container, "DataItem.comp_title")%></td> <td style="width:100px;"><%#DataBinder.Eval(Container, "DataItem.im_ondate","{0:d}")%></td> <td style="width:140px;"><%#DataBinder.Eval(Container, "DataItem.comp_state")%></td> <td style="width:60px;"><asp:Literal ID="litNoOfDays" runat="server"></asp:Literal> </td> <td style="width:60px;"><%#Eval("Comp_Status") %></td> </tr> </ItemTemplate> protected void rptData_ItemDataBound(object sender, RepeaterItemEventArgs e) { Literal litNoOfDays = (Literal)e.Item.FindControl("litNoOfDays"); DateTime dt1 = ResolvedDate; DateTime dt2 = RecievedDate; int NumberOfDays ; TimeSpan ts = dt1 - dt2; NumberOfDays=ts.Days; litNoOfDays.Text= NumberOfDays.ToString(); } Problem is now more serious, how can get these dates for each row.
user="Vasim Siddiqui"]
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Literal litNoOfDays = (Literal)e.Item.FindControl("litNoOfDays"); if(litDays!=null) { DateTime dt1; //ResolvedDate
DateTime dt2 ; // RecievedDate;
DataRowView dr = (DataRowView)e.Item.DataItem; if(DateTime.TryParse(dr["ResolvedDate"].ToString(), out dt1) && DateTime.TryParse(dr["RecievedDate"].ToString(), out dt2) ) { int n =dt1.Subtract(dt2).Days; litDays.Text = n.ToString(); } }
I think this may work for you.
Thanks