通常我会有代码发布。但是,我不确定从哪一个开始。也许我错了,但这个要求与大多数(来自客户)有点不同。所以,他们需要在他们的页面中添加一项新功能。他们希望能够运行一个报告,显示给定的一周内所有员工的总小时数。他们将使用DatePicker选择一个开始日期,另一个选择和结束日期。然后,点击一个按钮来运行报告。此报告将员工姓名作为第一列,然后每个列将具有一个日期标题。因此,如果他们选择了8-5-2017和8-19-2017,则列标题将为8-5-2017 | 2017年8月12日| 2017年8月19日。这些专栏下面是每个员工在特定周内工作的总小时数。显示列标题作为日期Telerik Rad Grid
1
A
回答
1
我有类似的情况,并设法通过使用包含我的数据的DataTable
来解决它。填写您的DataTable
的简单方法是创建一个存储过程。
在我的示例中,我将简单地在2个给定日期之间为每一天执行此操作,您应该能够更改此代码,使其每7天运行一次,从星期一/星期日开始,具体取决于您的要求是。如果您也需要帮助,请留下评论,如果我找到时间,我会看看我能做些什么。
CREATE TYPE [dbo].[DayTableType] AS TABLE(
[Datum] [date] NOT NULL,
[DayCol] [int] NOT NULL
)
GO
CREATE PROCEDURE [dbo].[MyStoredProcedure]
-- Add the parameters for the stored procedure here
@d1 datetime, @d2 datetime
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SET DATEFIRST 1;
-- Insert statements for procedure here
DECLARE @StartDate date = CONVERT(date, @d1);
DECLARE @EndDate date = CONVERT(date, @d2);
DECLARE @Days dbo.DayTableType;
WITH cte AS (
SELECT @StartDate AS Datum
UNION ALL
SELECT DATEADD(day,1,Datum) as Datum
FROM cte
WHERE DATEADD(day,1,Datum) <= @EndDate
)
INSERT INTO @Days
SELECT cte.Datum, DATEPART(DAY, cte.Datum)
FROM cte
OPTION(MAXRECURSION 0);
DECLARE @dPivot NVARCHAR(MAX)
SELECT @dPivot = ''
SELECT @dPivot = @dPivot + '[' + CONVERT(VARCHAR(8),d.Datum,3) + '],' FROM @Days d
SELECT @dPivot = SUBSTRING(@dPivot,1,LEN(@dPivot)-1)
DECLARE @SQLSTR NVARCHAR(MAX);
SET @SQLSTR =
'SELECT p.EmployeeId
,p.LastName
,p.FirstName
,'+ @dPivot + '
FROM (SELECT CONVERT(VARCHAR(8),d.Datum,3) AS DayCol
,e.EmployeeId
,e.LastName
,e.FirstName
,ISNULL((SELECT SUM(w.WorkedHours) FROM dbo.[EmployeeWorkDateTable] w
WHERE w.EmployeeId = e.EmployeeId AND CONVERT(DATE, w.WorkDate) = CONVERT(DATE, d.Datum)),0) AS DayInfo
FROM @Days d
LEFT OUTER JOIN dbo.[EmployeeTable] e ON e.IsActive = 1
) t
PIVOT (
MAX(t.DayInfo)
FOR t.DayCol IN (' + @dPivot + ')
) AS p
ORDER BY p.LastName'
EXECUTE SP_EXECUTESQL @SQLSTR, N'@Days DayTableType READONLY, @StartDate DATE, @EndDate DATE', @Days, @StartDate, @EndDate
END
这应该返回一个DataTable
,看起来很像你已经张贴在你的屏幕截图什么。 为了有这个正确显示到您的GridView
你需要在你的视图模型首先要获得该如下:
private DataTable _myDataTable;
public DataTable MyDataTable
{
get { return _myDataTable; }
set { SetProperty(ref _myDataTable, value); }
}
public void FillMyDataTable(DateTime startDate, DateTime endDate)
{
using (var conn = new SqlConnection("MyConnectionString"))
using (var cmd = new SqlCommand("MyStoredProcedure", conn) { CommandType = System.Data.CommandType.StoredProcedure })
{
cmd.Parameters.AddWithValue("@d1", startDate);
cmd.Parameters.AddWithValue("@d2", endDate);
var da = new SqlDataAdapter(cmd);
var ds = new DataSet();
da.Fill(ds);
MyDataTable = ds.Tables[0];
}
}
现在你应该只是你的GridView
的ItemSource绑定到你的DataTable
的DefaultView
财产,有AutoGenerateColumns="True"
,你更可以通过写AutoGeneratingColumn
<telerik:RadGridView x:Name="MyGridView"
AutoGenerateColumns="True"
ItemsSource="{Binding MyDataTable.DefaultView}"
AutoGeneratingColumn="MyGridView_OnAutoGeneratingColumn">
</telerik:RadGridView>
我希望这可以帮助你与你的问题,你的自定义emplementation编辑列名和其他的东西。如果您有任何问题,请随时留下评论。
相关问题
- 1. Telerik Rad Grid查看标题空间
- 2. 在telerik radgrid中显示列数据作为标题
- 3. 获取Telerik Grid列标题文本
- 4. 启用Telerik Rad Grid水平滚动
- 5. Telerik rad grid组合框事件
- 6. Telerik Tabstrip内部没有显示Telerik Grid
- 7. Telerik grid下拉列
- 8. 日期标签不显示为每列
- 9. ExtJS Grid显示日期列但不显示其他
- 10. Telerik MVC Grid - 按日期分组
- 11. Telerik Rad Textboxes和javascript问题
- 12. Rad Grid + jquery
- 13. telerik RAD HTMLChart标签显示NaN(非数字)
- 14. Telerik Grid ServerTemplate问题
- 15. Telerik RadGridView不会显示日期
- 16. Telerik Winforms主题标题栏不显示
- 17. Telerik Grid(MVC)不显示返回的JSON
- 18. Telerik Grid MVC不显示读取数据
- 19. 显示行值作为列标题
- 20. 显示列表名称作为标题
- 21. ASP Telerik Rad ColorPicker
- 22. 如何在Telerik RadCalendar控件中显示日期日期
- 23. IIS Express中的telerik显示问题
- 24. 日期在标题显示为没有明显的理由
- 25. Telerik Ajax复选框不显示在MVC3 Telerik Grid
- 26. Telerik MVC grid timezone问题
- 27. Telerik Grid和MVC3的问题
- 28. Telerik Grid:问题与选择
- 29. 在telerik grid mvc3中隐藏列和标题并访问它们
- 30. telerik grid中的标签条
这是一个非常稳固的解决方案。我必须说,对于大多数问题,答案是我收到的最好的答案。对不起,我没有及时回复接受这个解决方案。事情已经疯了。 –