C# 添加TimeSpan后,ASP Gridview速度减慢,记录计数超过150
我的gridview可以处理900多条记录。但我添加了一个新列,用于计算每行日期中的天数。它取今天的日期,并计算自数据库返回日期起的天数 摘要示例:C# 添加TimeSpan后,ASP Gridview速度减慢,记录计数超过150,c#,asp.net,datetime,gridview,timespan,C#,Asp.net,Datetime,Gridview,Timespan,我的gridview可以处理900多条记录。但我添加了一个新列,用于计算每行日期中的天数。它取今天的日期,并计算自数据库返回日期起的天数 摘要示例: ------------------------------- | Something | Date | Days | ------------------------------- | A | 3/1/2015 | 2 | | B | 3/1/2014 | 365 | ------------
-------------------------------
| Something | Date | Days |
-------------------------------
| A | 3/1/2015 | 2 |
| B | 3/1/2014 | 365 |
-------------------------------
IOnRowDataBound将每行绑定到RowDataBound以自定义标签文本
protected void gvView_RowDataBound (object sender, GridViewRowEventArgs e) {
Label daysInCycle = (Label)e.Row.Cells[0].FindControl("lblDays");
if (e.Row.RowType == DataControlRowType.DataRow) {
DataRowView ThisRow = (DataRowView)e.Row.DataItem;
if (ThisRow.Row.Field<DateTime?> ("MyDate").HasValue) {
TimeSpan ts = DateTime.Now - ThisRow.Row.Field<DateTime>("MyDate");
daysInCycle.Text = ts.Days.ToString();
} else {
daysInCycle.Text = "N/A";
}
}
}
protectedvoid gvView\u RowDataBound(对象发送方,GridViewRowEventArgs e){
Label daysInCycle=(Label)e.Row.Cells[0].FindControl(“lblDays”);
如果(e.Row.RowType==DataControlRowType.DataRow){
DataRowView ThisRow=(DataRowView)e.Row.DataItem;
if(ThisRow.Row.Field(“MyDate”).HasValue){
TimeSpan ts=DateTime.Now-ThisRow.Row.Field(“MyDate”);
daysInCycle.Text=ts.Days.ToString();
}否则{
daysInCycle.Text=“不适用”;
}
}
}
在我的gridview中的.aspx文件中
<asp:TemplateField HeaderText="Days">
<ItemTemplate>
<asp:Label ID="lblDays" runat="server" Text="NA"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
关于为什么我的gridview/IE在包含时间跨度后会变得无响应并且只是挂起,有什么想法吗?如果我进行TimeSpan计算,gridview将返回其正常响应状态。我没有看到任何会导致挂起的内容。但不需要在每个
RowDataBound
事件中创建Now()的新实例
将datetime变量声明为page类的成员变量:
DateTime TimeStamp;
在数据绑定
事件中,将变量设置为DateTime。现在:
TimeStamp = DateTime.Now;
然后在RowDataBound
中使用变量,而不是调用Now()
Label daysInCycle=(Label)e.Row.Cells[0].FindControl(“lblDays”);
daysInCycle.Text=“不适用”;
如果(e.Row.RowType==DataControlRowType.DataRow){
DataRowView ThisRow=(DataRowView)e.Row.DataItem;
if(ThisRow.Row.Field(“MyDate”).HasValue){
TimeSpan ts=时间戳-ThisRow.Row.Field(“MyDate”);
daysInCycle.Text=ts.Days.ToString();
}
}
Label daysInCycle = (Label)e.Row.Cells[0].FindControl("lblDays");
daysInCycle.Text = "N/A";
if (e.Row.RowType == DataControlRowType.DataRow) {
DataRowView ThisRow = (DataRowView)e.Row.DataItem;
if (ThisRow.Row.Field<DateTime?> ("MyDate").HasValue) {
TimeSpan ts = TimeStamp - ThisRow.Row.Field<DateTime>("MyDate");
daysInCycle.Text = ts.Days.ToString();
}
}