2013-07-09 25 views
2

我有下面的代碼,我有一個頁面,看起來像這樣改變: snippet of the pageWebMatrix中的WebGrid不允許rowsPerPage使用剃刀

我希望能夠選擇每頁的行數,但我不斷收到一個錯誤,說: 「CS1502:System.Web.Helpers.WebGrid.WebGrid(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,string,int,bool,bool, '有一些無效參數'

當變量rpp = data.Count()時,Grid 1實際上採用了@rpp的剃刀語法,但是當我在Grid 2中使用@rpp並且使var rpp = Request [「rpp1']時,它沒有接受它,並且它給了我那個錯誤。任何方式來避免這種情況?

@{ 
    if(Request["action"] == "Go") 
    { 
    var rpp = Request["rpp1"]; 

    <p>Showing @rpp rows per page.</p> 
    var columns2 = new[]{"ID", "SSO", "Category", "System", "Subject", "Created", "Assigned_To", "Case_Status"}; 
    var grid2 = new WebGrid(data, ajaxUpdateContainerId: "grid", defaultSort: "ID", columnNames: columns2, rowsPerPage: @rpp); 
    if (Request.QueryString[grid.SortDirectionFieldName].IsEmpty()) { 
    grid2.SortDirection = SortDirection.Descending; 
    } 
    @grid2.GetHtml( 
     tableStyle : "table", 
     alternatingRowStyle : "alternate", 
     headerStyle : "header", 
     mode: WebGridPagerModes. All, 
     previousText: "Previous", 
     nextText: "Next", 
     firstText: "First Page", 
     lastText: "Last Page", 
     columns: grid.Columns(
        grid.Column("ID", "ID"), 
        grid.Column("SSO", "SSO"), 
        grid.Column("Category", "Category"), 
        grid.Column("System", "System"), 
        grid.Column("Subject", "Subject"), 
        grid.Column("Created", "Created"), 
        grid.Column("Assigned_To", "Assigned To"), 
        grid.Column("Case_Status", "Status") 
    ) 
    ) 
    } else{ 

    if(Request["action"] == "Plain Table - Excel") 
    { 
    var rpp = data.Count(); 
    var columns1 = new[]{"ID", "SSO", "Category", "System", "Subject", "Created", "Assigned_To", "Case_Status"}; 
    var grid1 = new WebGrid(data, ajaxUpdateContainerId: "grid", defaultSort: "ID", columnNames: columns1, rowsPerPage: @rpp); 
    if (Request.QueryString[grid1.SortDirectionFieldName].IsEmpty()) { 
    grid1.SortDirection = SortDirection.Descending; 
    } 
    @grid1.GetHtml( 
     mode: WebGridPagerModes. All, 
     columns: grid.Columns(
        grid.Column("ID", "ID"), 
        grid.Column("SSO", "SSO"), 
        grid.Column("Category", "Category"), 
        grid.Column("System", "System"), 
        grid.Column("Subject", "Subject"), 
        grid.Column("Created", "Created"), 
        grid.Column("Assigned_To", "Assigned To"), 
        grid.Column("Case_Status", "Status") 
    ) 
    ) 
} else ............. 

這是形式:

<h4>Rows Per Page</h4> 
<form action="" method="get"> 
    <div class="right"> 
     <select id="rpp1" name="rpp1"> 
      <option selected="@(Request["rpp1"] == "15")" value="15">15</option> 
      <option selected="@(Request["rpp1"] == "25")" value="25">25</option> 
      <option selected="@(Request["rpp1"] == "50")" value="50">50</option> 
      <option selected="@(Request["rpp1"] == "75")" value="75">75</option> 
      <option selected="@(Request["rpp1"] == "100")" value="100">100</option> 
     </select> 
    </div> 
    <input type="submit" name="action" value="Go"/> 
    </form> 

回答

1

隨着錯誤消息告訴你,錯誤的數據類型被傳遞作爲參數的構造函數的WebGrid。請求項目是字符串,而不是整數。您可以使用asInt中()擴展方法來改變它:

var rpp = Request["rpp1"].AsInt(); 

而且,你不需要@符號,當一個代碼塊中:

var grid2 = new WebGrid(data, ajaxUpdateContainerId: "grid", defaultSort: "ID", columnNames: columns2, rowsPerPage: rpp); 
+0

WOW!謝謝!我很佩服你所有的工作,這對我有很大幫助! – Alexandra