Asp.net mvc MVC Razor WebGrid在按钮提交时获取选定行

Asp.net mvc MVC Razor WebGrid在按钮提交时获取选定行,asp.net-mvc,asp.net-mvc-4,razor,webgrid,Asp.net Mvc,Asp.net Mvc 4,Razor,Webgrid,如何将WebGrid选定行放入隐藏变量中 我正在使用以下代码 @{ var grid = new WebGrid(@ViewBag.ImageFiles, canPage: false, rowsPerPage: 5, selectionFieldName: "SelectedRow", ajaxUpdateContainerId: "gridImages"); } <div id="gridContent"> @grid.GetHtml(tableStyle: "webGrid",

如何将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;

当我点击submit按钮时,我并没有得到javascript中隐藏的变量和值。

当webgrid呈现时,它只是一个html表。我可能错了,但我不认为你的代码会随着点击的内容而改变。为了更改隐藏值以匹配所选行,我始终使用jquery。试试这样的东西,看看是否适合你

<script type="text/javascript">
   $(document).ready(function(){
       $('#tableID').on('click', function(){
           $('#hdnSelectedRow').val($(this).closest('tr').find('#yourField').val());
       });
   });
</script>

我找到了获取选定行的解决方案

下面是代码

@{
var grid = new WebGrid(@ViewBag.ImageFiles, selectionFieldName: "SelectedRow");
}
<div id="gridImages">
@grid.GetHtml(tableStyle: "webGrid",
            headerStyle: "header",
            displayHeader: true,
            alternatingRowStyle: "alt",
            selectedRowStyle: "select",
            mode: WebGridPagerModes.All,
            columns: grid.Columns(
            grid.Column("Select", format: @<text>@Html.RadioButton("rbFile", "", false) </text>),
            grid.Column("File", "File", format: @<text>@item.File</text>)))
</div>
var selectedValue = "";
                        var isSelected = false;
                        $('#gridImages table tr').each(function () {
                            if ($(this).find("input[id*='rbFile']").length > 0) {
                                if ($(this).find("input[id*='rbFile']")[0].checked == true) {
                                    isSelected = true;
                                    selectedValue = $(this)[0].innerText;
                                }
                            }
                        });
                        if (isSelected == true) {
                            $(this).dialog("close");
                            txtBg = document.getElementById("txtBg");
                            txtBg.value = selectedValue;
                        }
                        else {
                            alert("Please select atleast one file.");
                        }