سؤال

i am picking names from sql store procedure to display it in WEBGRID. I am usign MVC 3 and linq to sql.

but issue is that when i pick column names from database then it is not ordered as it is in Database.

e.g. in database it displays as

EmpName     EmpID     EmpShift

but in webgrid it appears

Empid     EmpShift    EmpID

Query:

with times as (
SELECT    t1.EmplID
        , t3.EmplName
        , min(t1.RecTime) AS InTime
        , max(t2.RecTime) AS [TimeOut]
        , t4.ShiftId as ShiftID
        , t4.StAtdTime as ShStartTime
        , t4.EndAtdTime as ShEndTime
        , cast(min(t1.RecTime) as datetime) AS InTimeSub
        , cast(max(t2.RecTime) as datetime) AS TimeOutSub
        , t1.RecDate AS [DateVisited]
FROM  AtdRecord t1 
INNER JOIN 
      AtdRecord t2 
ON    t1.EmplID = t2.EmplID 
AND   t1.RecDate = t2.RecDate
AND   t1.RecTime < t2.RecTime
inner join 
      HrEmployee t3 
ON    t3.EmplID = t1.EmplID 
inner join AtdShiftSect t4
ON t3.ShiftId = t4.ShiftId
group by 
          t1.EmplID
        , t3.EmplName
        , t1.RecDate
        , t4.ShiftId 
        , t4.StAtdTime 
        , t4.EndAtdTime
)
SELECT 
 EmplID
,EmplName
,ShiftId As ShiftID
,InTime
,[TimeOut]
,convert(char(5),cast([TimeOutSub] - InTimeSub as time), 108) TotalWorkingTime
,[DateVisited]
,CONVERT(char(5),CASE WHEN  CAST([TimeOutSub] AS DATETIME) >= ShEndTime And ShiftID = 'S002'
     Then  LEFT(CONVERT(varchar(12), DATEADD(ms, DATEDIFF(ms, CAST(ShEndTime AS DATETIME),  CAST([TimeOutSub] AS DATETIME)),0), 108),5) 
     WHEN  CAST([TimeOutSub] AS DATETIME) >= ShEndTime And ShiftID = 'S001'
     Then  LEFT(CONVERT(varchar(12), DATEADD(ms, DATEDIFF(ms, CAST(ShEndTime AS DATETIME),  CAST([TimeOutSub] AS DATETIME)),0), 108),5) 
     ELSE '00:00' END, 108) AS OverTime
FROM times order by EmplID, ShiftID, DateVisited

Webgrid output:

enter image description here

webgrid code:

public ActionResult showAllEmployees() 
        {
            IEnumerable<GetAtdRecord_SpResult> EmployeeAtd = DataContext.GetAtdRecord_Sp(null).ToList();
            var names = (from n in DataContext.HrEmployees select n).Distinct();
            return View(EmployeeAtd);
        }

view:

@{

    var grid = new WebGrid(ViewData.Model);

}

@grid.GetHtml()
هل كانت مفيدة؟

المحلول

Default WebGrid Sorting Columns order is based on Alphabetical order. To make it your own order, you have to specify columns in the WebGrid.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top