2

次のコードがあります。次のようなページがあります。 ページのスニペット

ページごとの行数を選択できるようにしたいのですが、「CS1502: 'System.Web.Helpers.WebGrid.WebGrid(System.Collections.Generic.IEnumerable, System.Collections.Generic.IEnumerable, string, int, bool, bool, string, string, string, string, string, string, string)' に無効な引数があります"

グリッド 1 は、var rpp = data.Count() の場合、実際には @rpp のカミソリ構文を使用していますが、グリッド 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>
4

1 に答える 1

1

エラー メッセージが示すように、間違ったデータ型が引数として WebGrid コンストラクターに渡されています。リクエスト項目は int ではなく文字列です。AsInt() 拡張メソッドを使用して変更できます。

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

また、コード ブロック内では @ 記号は必要ありません。

var grid2 = new WebGrid(data, ajaxUpdateContainerId: "grid", defaultSort: "ID", columnNames: columns2, rowsPerPage: rpp);
于 2013-07-09T20:02:31.653 に答える