0

Webグリッドの列にチェックボックスを追加しようとしていますが、Html.CheckBoxを使用してレンダリングするのが難しいと感じています。input type = "checkbox"を使用するとレンダリングされますが、ビューモデルに値を保存できないようです。

2つのwebGridがあるかなり複雑なビューがあり、一方の項目を選択してもう一方の項目に移動します。grid1に移動すると、必要に応じて各行に対してチェックボックスをオンにできます。保存するチェックボックスの値を取得できないことを除いて、すべてが機能しています。

チェックボックスがあるグリッドのコードは次のようになります。

var grid1 = new WebGrid(source: Model.FieldsInTemplate, canSort: false, defaultSort:"FieldName");

    @grid1.GetHtml(headerStyle:"gridGroupRow", tableStyle: "gridGroup", rowStyle: "gridRow", alternatingRowStyle: "gridRowAlt", columns: grid1.Columns(
        grid1.Column("FieldName", "Field Name"),
        grid1.Column(header: "Required", format: @<text><input name="IsRequired" type="checkbox" value="@item.IsRequired" /></text>),
        grid1.Column(format: (item) => new HtmlString("<a href='#' id='test' onclick='updateTemplate(false," + item.FieldId.ToString() + ");'>Remove</a>"))
             ))

したがって、上記を使用すると、グリッドはチェックボックスを使用してレンダリングされますが、送信時にエンティティは常にfalseになります。ビューは次のviewModelを使用します。

public class TemplateFieldInteractViewModel
{
    public IList<MetadataTemplateFieldInstanceDisplayViewModel> FieldsInTemplate
    {
        get;
        set;
    }

    public IList<MetadataTemplateFieldInstanceDisplayViewModel> FieldsNotInTemplate
    {
        get;
        set;
    }
}

MetadataTemplateFieldInstanceDisplayViewModelは次のようになります。

public class MetadataTemplateFieldInstanceDisplayViewModel
{
    public int FieldId {get;set;}

    public string FieldName {get;set;}

    public bool IsRequired {get;set;}
}

これが少し曖昧な場合はお知らせください。私はここで初めてです。不要なコードが多すぎて過負荷にならないようにします。

乾杯

マーク

4

3 に答える 3

4

チェックボックスの値は、それが「チェックされている」かどうかを決定しません。checked="checked"を使用する必要があります。

私はRazorで100%学んだわけではありませんが、次の試みがあります。

<input name="IsRequired" type="checkbox" @if(item.IsRequired) { <text>checked="checked"</text>} value="@item.IsRequired" /> 

これで問題は解決しますか?

于 2012-04-24T13:36:31.870 に答える
1

次のように列を宣言する場合:

grid.Column("Select", "Select", format: @<input type="checkbox" name="selectedrows" value="@item.WedNo" />)

次に、アクションでフォームの投稿を次のように選択したアイテムにアクセスできます。

public ActionResult Selections(string[] selectedrows)

ここで選択された行には、チェックされたすべてのチェックボックスが含まれます。

于 2013-11-22T10:48:06.193 に答える
0

私はこれを私が望む方法で行う方法を考え出しました:

   grid.Column("Select", header: "", format: (item) => @Html.Raw("<a href='" + item.GetSelectUrl() + "' /><img src='" + ((grid.SelectedRow == item) ? "../../Content/images/AdminSelect-ON.png" : "../../Content/images/AdminSelect-OFF.png") + "' />")),
于 2012-05-03T01:16:03.763 に答える