2017-09-22 26 views
1

我有一個表如下:Linq如何可以通過變量動態選擇一個表格的字段?

public class Report 
{ 

     public int ReportId { get; set; } 

     public string ReportItem { get; set; } 

     public int RowN { get; set; } 

     public decimal M00 { get; set; } 

     public decimal M01 { get; set; } 

     public decimal M02 { get; set; } 

     public decimal M03 { get; set; } 

     public decimal M04 { get; set; } 

     public decimal M05 { get; set; } 

     public decimal M06 { get; set; } 

     public decimal M07 { get; set; } 

     public decimal M08 { get; set; } 

     public decimal M09 { get; set; } 

     public decimal M10 { get; set; } 

     public decimal M11 { get; set; } 

     public decimal M12 { get; set; } 
} 

每次第一4個字段應該被視爲和要觀看的第五字段是從剩餘的12個字段中選擇的一個。所選變量從視圖頁面傳輸到控制器,然後通過ViewBage返回到視圖頁面。我已經通過jQuery Datatable解決了這個問題。鍵代碼行如下所示:

<script type="text/javascript"> 
     $(document).ready(function() 
     { 
      var table = $('.table').dataTable(); 

      for (var i=4; i <= 15; ++ i) 
      { 
       table.fnSetColumnVis(i, false, false); 
      } 

      var i = @ViewBag.strMon; 

      table.fnSetColumnVis(i, true, false); 

     }); 

</script> 

在方式中,所有的12個字段的首先HIDEN,然後將它們中的一個被所述可變選擇來顯示。

但它是一個令人滿意的方式,每次當我提出一個新的選擇,所有的12場都顯示在視圖頁面,然後11S慢慢消失。

我還有另外一個想法來解決這個問題。我做了另一個表如下:

公共類ReportView {

public int ReportId { get; set; } 

    public string ReportItem { get; set; } 

    public int RowN { get; set; } 

    public decimal M00 { get; set; } 

    public decimal M99 { get; set; } 

} 

我想要做的就是寫從報告中的數據在控制器中ReportView然後進行與ReportView相關視圖頁面顯示。但我不知道該怎麼做。如果表格字段可以由變量選擇,問題將被解決,或者表格可以通過列號返回。任何幫助?謝謝。

+0

你可以將問題簡化得更清楚嗎? – DiskJunky

+0

感謝您的關注。爲了簡化,表格中有16個字段(或列),但每次只查看5個字段。前4個總是被看到,並且第5個被從12s變量選擇。 viewModel的表二是建立的,其中只有5個字段。如何通過變量的選項來讀取表1到表2中的數據。 – yMvcBeginner

+0

有人建議編寫一個存儲過程如下: – yMvcBeginner

回答

0

對於我的問題,我無法得到滿意的答案。我認爲我沒有完全理解自己。現在我通過使用存儲過程解決了這個問題。我希望這有助於明確我的問題,也可以幫助其他人解決同樣的問題。程序如下:

USE [MvcAccDb] 
GO 

/****** Object: StoredProcedure [dbo].[InsertDataIntoReportViews] Script Date: 09/24/2017 19:13:23 ******/ 

SET ANSI_NULLS ON 

GO 
SET QUOTED_IDENTIFIER ON 
GO 

-- ============================================= 
-- Author:  <Author,,Name> 
-- Create date: <Create Date,,> 
-- Description: <Description,,> 
-- ============================================= 

ALTER PROCEDURE [dbo].[InsertDataIntoReportViews] 
    -- Add the parameters for the stored procedure here 
    (@month nvarchar(2)) 

AS 

BEGIN 

    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 


    -- Insert statements for procedure here 

    insert into ReportViews (ReportID, ReportItem, RowN, M00, M99) 
    select [ReportID], 
    [ReportItem], 
    [RowN], 
    [M00], 
    CASE 
    WHEN @month = '01' then M01 
    WHEN @month = '02' then M02 
    WHEN @month = '03' then M03 
    WHEN @month = '04' then M04 
    WHEN @month = '05' then M05 
    WHEN @month = '06' then M06 
    WHEN @month = '07' then M07 
    WHEN @month = '08' then M08 
    WHEN @month = '09' then M09 
    WHEN @month = '10' then M10 
    WHEN @month = '11' then M11 
    WHEN @month = '12' then M12 
    END AS M99  
    from Reports 
    END