0

私はいくつかの MVC3 グリッドを持っています。

@grid.GetHtml(
        tableStyle: "grid",
        headerStyle: "CenteredHeader",
        alternatingRowStyle: "alt",
        columns: grid.Columns(

その方法で、いくつかのジェネリック checkboxesを介してデータをフィルタリングします。

[IsAuthenticated]
[HttpPost]
public ActionResult Movies(int? id, FormCollection formCollection)
{

すでにフィルター処理されたデータを並べ替えようとすると、問題が発生します。つまり、列ヘッダーの URL にはパラメーターがなく、[HttpPost] も使用できません。

選択したチェックボックスにアクセスしたり、それらのチェックボックスをクリックしたときに列ヘッダーの URL を変更したりするにはどうすればよいですか?

このリンクには、MVC3 グリッドの列ヘッダー URL があります。

http://localhost:16349/MyWebsite/Movies/807?sort=TechnologyName&sortdir=DESC

ありがとうございました!

PS コード

<h2>
    <a class="mainmenu" href="@Url.Action("Index", "Home/Areas")">Areas\</a><a class="mainmenu"href="@Url.Action("Index", "BoxOffice")">Box
        Office\</a><span class="currentmenu">Cinema @ViewBag.ChainName</span></h2>
@{        

    var grid = new WebGrid(source: Model,
                 defaultSort: "MovieName",
                 rowsPerPage: 30);
}
@using (Html.BeginForm())
{
    <fieldset>
        <legend>Fecha de inicio y de finalización</legend>Fecha de inicio
        <input type="text" id="startDate" size="10" class="datepicker" autocomplete="off" name="startDate" value="@ViewBag.StartDate" />
        Fecha de finalización
        <input type="text" id="endDate" size="10" class="datepicker" autocomplete="off" name="endDate" value="@ViewBag.EndDate"/>
        <input type="submit" value="Buscar" class="button" />
        @if (ViewBag.TechnologyNames != null)
        {
            <div style="margin: 8px;">
                <b>Tecnologias</b>&nbsp;&nbsp;&nbsp;
                @if (Session["TechList"] == null)
                {
                    <input type="checkbox" name="option_all" id="checkbox_all" checked="checked" value="-1" /> <label>Todos</label>
                    foreach (var technologyName in ViewBag.TechnologyNames)
                    {
                        if (!technologyName.TechnologyID.ToString().Equals("-1"))
                        {
                    <input type="checkbox" name="option_@(technologyName.TechnologyID)" id="checkbox_@(technologyName.TechnologyID)"
                                        value="@technologyName.TechnologyID" />  @technologyName.Name
                        }
                    }
                }
                else
                {
                    var lst = (List<string>)Session["TechList"];

                    if (lst.Contains("-1"))
                    {
                    <input type="checkbox" name="option_all" id="checkbox_all" checked="checked" value="-1" /> <label>Todos</label>
                    }
                    else
                    {
                    <input type="checkbox" name="option_all" id="checkbox_all" value="-1" /> <label>Todos</label>
                    }

                    foreach (var technologyName in ViewBag.TechnologyNames)
                    {
                        bool isSelected = false;

                        foreach (var t in lst)
                        {
                            string n = technologyName.TechnologyID.ToString();

                            if (n.Equals(t))
                            {
                                isSelected = true;
                                break;
                            }
                        }

                        if (isSelected)
                        {
                            if (!technologyName.TechnologyID.ToString().Equals("-1"))
                            {                                                   
                    <input checked="checked" type="checkbox" name="option_@(technologyName.TechnologyID)" id="checkbox_@(technologyName.TechnologyID)"
                                        value="@technologyName.TechnologyID" />  @technologyName.Name
                            }
                        }
                        else
                        {
                            if (!technologyName.TechnologyID.ToString().Equals("-1"))
                            {                                                     
                    <input type="checkbox" name="option_@(technologyName.TechnologyID)" id="checkbox_@(technologyName.TechnologyID)"
                                        value="@technologyName.TechnologyID" />  @technologyName.Name
                            }
                        }
                    }
                }
            </div>
        }
    </fieldset>
}
<br />
<div id="grid">
    @if (Model != null)
    {

        @grid.GetHtml(
        tableStyle: "grid",
        headerStyle: "CenteredHeader",
        alternatingRowStyle: "alt",
        columns: grid.Columns(
                           grid.Column(format: (item) => Html.ActionLink("Detalles", "Movie", new { id = item.MovieID })),
                           grid.Column("MovieName", "Pelicula"),
                                    grid.Column("TechnologyName", "Tecnologia"),
                                grid.Column("Visitors", "Espect.", style: "CenteredNumbers"),
                                grid.Column("TotalSum2", "Monto", format: (item) => item.TotalSum2.ToString("#,0.00"), style: "CenteredNumbers"),
                                grid.Column("MoviePromedio", "TP", format: (item) => item.MoviePromedio.ToString("#,0.00"), style: "CenteredNumbers"),
                                grid.Column(format: (item) => Html.ActionLink("Comparativo por complejo", "Compare", new { id = item.MovieID }))
        )
    )     
    }
</div>
4

0 に答える 0