0

WebGrid の選択した行を隠し変数に入れるにはどうすればよいですか。

次のコードを使用しています。

@{
var grid = new WebGrid(@ViewBag.ImageFiles, canPage: false, rowsPerPage: 5, selectionFieldName: "SelectedRow", ajaxUpdateContainerId: "gridImages");
}
<div id="gridContent">
@grid.GetHtml(tableStyle: "webGrid",
            htmlAttributes: new { id = "gridImages" },
            headerStyle: "header",
            displayHeader: true,
            alternatingRowStyle: "alt",
            selectedRowStyle: "select",
            columns: grid.Columns(
            grid.Column("Select", format: (item) => item.GetSelectLink("Select")),
            grid.Column("File", "Image")))
</div>
<input type="button" value="Submit" onclick="javascript getSelectedRow();"/>
@{
System.Dynamic.ExpandoObject expobject = null;
if (grid.HasSelection)
{
    expobject = (System.Dynamic.ExpandoObject)grid.SelectedRow.Value;
<input type="hidden" id="hdnSelectedRow" name="hdnSelectedRow" value="@(expobject == null ? "" : expobject.FirstOrDefault().Value.ToString())" />
}
}

ここでは、次のコードから Datatable を Webgrid にバインドしています

foreach (DataRow row in imageFiles.Rows)
        {
            var obj = (IDictionary<string, object>)new ExpandoObject();
            foreach (DataColumn col in imageFiles.Columns)
            {
                obj.Add(col.ColumnName, row[col.ColumnName]);
            }
            result.Add(obj);
        }
        ViewBag.ImageFiles = result;

送信ボタンをクリックすると、javascript で非表示の変数と値が取得されません。

4

2 に答える 2

0

WebGrid がレンダリングされるとき、それは単なる html テーブルです。私は間違っているかもしれませんが、クリックした内容でコードが変わるとは思いません。非表示の値を選択した行に一致するように変更するには、常に jquery を使用します。このようなことを試して、うまくいくかどうかを確認してください。

<script type="text/javascript">
   $(document).ready(function(){
       $('#tableID').on('click', function(){
           $('#hdnSelectedRow').val($(this).closest('tr').find('#yourField').val());
       });
   });
</script>
于 2013-09-18T15:07:22.877 に答える