create procedure St_Proc_GetUserReportforCurrentDayTask
@userID int
as
Begin
set NoCount on;
DECLARE @TODAY DATE
SET @TODAY = CONVERT(VARCHAR(10), GETDATE(), 111)
select CONVERT(VARCHAR,production.CalendarDate,101) + RIGHT (CONVERT(VARCHAR,production.CalendarDate , 100 ) ,7) as Date,
RegionAndProjectInfo.RegionProjectName as Region ,
County.CountyName as County,
WorkType.WorkTypeName as WorkType,
Task.TaskName as Task,
Production.VolumeProcessed as 'Volumes Processed',
Production.TimeSpent as 'Duration(HH:MM)'
from Production
inner join RegionAndProjectInfo
on
RegionAndProjectInfo.RegionProjectID=Production.RegionProjectID
inner join County
on
County.CountyID=Production.CountyID
inner join WorkType
on
WorkType.WorkTypeID=Production.WorkTypeID
inner join Task
on
Task.TaskID=Production.TaskID
where Production.UserID=@userID and CalendarDate >= @TODAY
End
这是我的存储过程,我正在执行此存储过程并将结果保存在数据集中,然后将网格与此数据集绑定。
private void BindGridOnPageLoad()
{
_production = new EmployeeQuotientCL.Production();
_userEcode = Convert.ToString(Session["UserID"]);
int _userID = _production.GetUserIDFromDB(_userEcode);
dsUserTaskDetails = _production.GetTabularUsertaskDetails(_userID);
BindGridView(dsUserTaskDetails);
}
到这里为止,一切都很好。然后我要求在网格视图的页脚中显示 Duration(HH:MM) 总计。我在页面中添加了以下代码:-
<div id="gridview">
<asp:GridView ID="GVUserEnteredDetails" runat="server" ShowFooter="true" CssClass="mGrid" CellSpacing="2" onselectedindexchanged="GVUserEnteredDetails_SelectedIndexChanged" onrowdatabound="GridView1_RowDataBound">
</asp:GridView>
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
tp += Convert.ToDecimal(((DataRowView)e.Row.DataItem).Row["[Duration(HH:MM)]"]);
}
if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells[0].Text = "Total Hours : ";
e.Row.Cells[1].Text = tp.ToString("c");
e.Row.Cells[0].HorizontalAlign = HorizontalAlign.Right;
e.Row.Cells[1].HorizontalAlign = HorizontalAlign.Right;
e.Row.Font.Bold = true;
}
}
但是当我调试时,我得到了这个错误:-“DataBinding:'System.Data.DataRowView' 不包含名为'Duration'的属性。” 我在做什么错误以及如何解决它?任何建议和帮助都会对我有所帮助。
堆栈跟踪:-
[ArgumentException: 列 '[Duration(HH:MM)]' 不属于表 Table。] System.Data.DataRow.GetDataColumn(String columnName) +2124943 System.Data.DataRow.get_Item(String columnName) +13 EQ。 Associates.Production.GridView1_RowDataBound(Object sender, GridViewRowEventArgs e) 在 C:\Users\dsingh\Documents\Visual Studio 2010\Projects\EQ\EQ\Associates\Production.aspx.cs:112 System.Web.UI.WebControls.GridView .OnRowDataBound(GridViewRowEventArgs e) +115 System.Web.UI.WebControls.GridView.CreateRow(Int32 rowIndex, Int32 dataSourceIndex, DataControlRowType rowType, DataControlRowState rowState, Boolean dataBind, Object dataItem, DataControlField[] fields, TableRowCollection rows, PagedDataSource pagedDataSource) + 181 System.Web.UI.WebControls.GridView.CreateChildControls(IEnumerable 数据源,布尔数据绑定)+3896 系统。Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable 数据)+66 System.Web.UI.WebControls.GridView.PerformDataBinding(IEnumerable 数据)+14 System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable 数据)+128 系统.Web.UI.DataSourceView.Select(DataSourceSelectArguments 参数,DataSourceViewSelectCallback 回调) +33 System.Web.UI.WebControls.DataBoundControl.PerformSelect() +143 System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +74 System.Web .UI.WebControls.GridView.DataBind() +4 EQ.Associates.Production.BindGridView(DataSet ds) 在 C:\Users\dsingh\Documents\Visual Studio 2010\Projects\EQ\EQ\Associates\Production.aspx.cs :603 EQ.Associates.Production.BindGridOnPageLoad() 在 C:\Users\dsingh\Documents\Visual Studio 2010\Projects\EQ\EQ\Associates\Production.aspx.cs:593 EQ.Associates.Production.Page_Load(Object sender, EventArgs e) 在 C:\Users\dsingh\Documents\Visual Studio 2010\Projects\EQ\EQ\Associates\Production.aspx.cs:78 System.Web.Util。 CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35 System.Web.UI.Control.OnLoad(EventArgs e) + 91 System.Web.UI.Control.LoadRecursive() +74 System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)+2207CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35 System.Web.UI.Control.OnLoad(EventArgs e) +91 System.Web.UI.Control.LoadRecursive() +74 System.Web.UI.Page.ProcessRequestMain( Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35 System.Web.UI.Control.OnLoad(EventArgs e) +91 System.Web.UI.Control.LoadRecursive() +74 System.Web.UI.Page.ProcessRequestMain( Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207