简单的MVC Web网格问题.我只想向表中的每一行添加唯一的ID [英] Simple MVC web grid issue. I just want to add a unique id to each row in a table

查看:71
本文介绍了简单的MVC Web网格问题.我只想向表中的每一行添加唯一的ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人提出了以下答案: mvccontrib网格-如何添加<tr>id 有一种优雅的方法吗?

Somebody proposed this answer: mvccontrib grid - How to add <tr> id is there an elegant way?

我有一个如下表:

我只想在此表的每一行中添加唯一的ID

I just want to add a unique id to each row in this table

< tr class ="webgrid-row-style"> 我实际上想要 @ item.MvrMedsDetailsId.ToString(),这是要设置的动态值在行ID中.像这样:

<tr class="webgrid-row-style"> I actually want @item.MvrMedsDetailsId.ToString() which is a dynamic value to be set in the row id. Like this:

<tr class="webgrid-row-style" id=@item.MvrMedsDetailsId.ToString()>
should yield for each row in the table
<tr class="webgrid-row-style" id=1>
<tr class="webgrid-row-style" id=4>
<tr class="webgrid-row-style" id=17>

整个代码

@model MedicalVariance.Models.ViewModels.AddMedicineModel
@using MedicalVariance.CustomHtmlHelpers
       <script src="@Url.Content("~/Scripts/ModalEditor.js")" type="text/javascript"></script>

 <!--Learn more about webgrid: http://msdn.microsoft.com/en-us/magazine/hh288075.aspx -->
 @{//razor starts 
     var grid = new WebGrid(source: Model.MedicineListGrid, canPage: true, rowsPerPage: 100, fieldNamePrefix: "details");

     grid.Pager(WebGridPagerModes.NextPrevious);
        @grid.GetHtml(//start of @grid.GetHtml()


                        tableStyle: "webgrid",
                        headerStyle: "webgrid-header",
                        footerStyle: "webgrid-footer",
                        alternatingRowStyle: "webgrid-alternating-row",
                        selectedRowStyle: "webgrid-selected-row",
                        rowStyle: "webgrid-row-style",
                        htmlAttributes: new { id = "start" },

       columns: grid.Columns
       (

                        grid.Column
                        (

                            columnName: "MvrMedsGenericName", //this comes from the webgrid model defintion
                            header: "Medicine Names",
                            canSort: false,
                            format:
                             @<text>
                               @Html.ActionLink((string)(item.MvrMedsGenericName.ToString()),
                                    "MedicineProfile", //action name
                                    "MedicineManagement", //controller name
                             new { PKMvrMedsId = item.PKMvrMedsId }, null) 
                             </text>
                         ),

                         grid.Column
                         (
                           columnName:"MvrMedsActualOrPotential",
                           header: "Actual Or Potential",
                           canSort:false,
                           format:
                           @<text>
                             <a href="#" class="ActualSelectedModal" id="@item.MvrMedsDetailsId.ToString()">@item.MvrMedsActualOrPotential.ToString()</a>
                             </text>

                         ),
                         grid.Column
                         (
                           columnName: "MvrMedsDoses",
                           header: "Doses Administered",
                           canSort: false,
                           format:
                           @<text>
                             <a href="#" class="DoseSelectedModal" id="@item.MvrMedsDetailsId.ToString()">@item.MvrMedsActualOrPotential.ToString()</a>
                             </text> 
                         ),

                         grid.Column
                         (
                           columnName: "MvrMedsCriticalBreakDownPoint",
                           header: "Critical Break Down Point",
                           canSort: false
                         ),
                          grid.Column
                          (
                            columnName: "MvrMedsOutcomes",
                            header: "Category Outcomes",
                            canSort: false
                          ),
                          grid.Column
                          (
                           columnName: "MvrMedsPreliminaryAnalysis",
                           header: "Preliminary Analysis",
                           canSort: false
                          ),
                             grid.Column
                          (
                           columnName: "MvrMedsPreliminaryAnalysis",
                           header: "Preliminary Analysis",
                           canSort: false
                          ),

                         grid.Column
                         (
                            columnName: "PKMvrMedsId",
                            header: "Delete",
                            format:
                         @<text>
                             @Html.ActionLink((string)(item.DeleteLabel.ToString()),
                                    "DeleteMedicine", //action name
                                    "MedicineManagement", //controller name
                         new { MvrId = item.MvrId, PKMvrMedsId = item.PKMvrMedsId }, null) 
                         </text>
                         )/*Please note that DeleteAdministrationError is registered in the global.asax*/


                        )
                       );//end of @grid.GetHtml() 
     }

哪个会生成以下HTML

<!--Learn more about webgrid: http://msdn.microsoft.com/en-us/magazine/hh288075.aspx -->
<table class="webgrid" id="start">

    <thead>

        <tr class="webgrid-header">

            <th scope="col">Medicine Names</th>
            <th scope="col">Actual Or Potential</th>
            <th scope="col">Doses Administered</th>
            <th scope="col">Critical Break Down Point</th>
            <th scope="col">Category Outcomes</th>
            <th scope="col">Preliminary Analysis</th>
            <th scope="col">Preliminary Analysis</th>
            <th scope="col">
                <a href="/MedicineManagement/ReloadMedicineList/1?detailssort=PKMvrMedsId&amp;detailssortdir=ASC">Delete</a>
            </th>

        </tr>

    </thead>
    <tbody>
        <tr class="webgrid-row-style">

            <td>
                <a href="/MedicineManagement/MedicineProfile/1">ACETAMINOPHEN</a> 
            </td>
            <td>
                <a href="#" class="ActualSelectedModal" id="1">Actual</a>
            </td>
            <td>    
                <a href="#" class="DoseSelectedModal" id="1">Actual</a>
            </td>
            <td>Administration</td>
            <td>A</td>
            <td>ssss</td>
            <td>ssss</td>
            <td>
                <a href="/MedicineManagement/DeleteMedicine/1/1">Delete</a> 
            </td>

        </tr>
        <tr class="webgrid-alternating-row">

            <td>
                <a href="/MedicineManagement/MedicineProfile/2">ABACAVIR SULFATE</a> 
            </td>
            <td>
                <a href="#" class="ActualSelectedModal" id="2">Actual</a>
            </td>
            <td>
                <a href="#" class="DoseSelectedModal" id="2">Actual</a>
            </td>
            <td>Administration</td>
            <td>E</td>
            <td>1212</td>
            <td>1212</td>
            <td>
                <a href="/MedicineManagement/DeleteMedicine/1/2">Delete</a> 
            </td>

        </tr>

        <tr class="webgrid-row-style">

            <td>
                <a href="/MedicineManagement/MedicineProfile/3">ALPRAZOLAM</a> 
            </td>
            <td>
                <a href="#" class="ActualSelectedModal" id="3">Actual</a>
            </td>
            <td>
                <a href="#" class="DoseSelectedModal" id="3">Actual</a>
            </td>
            <td>Administration</td>
            <td>E</td>
            <td>1212</td>
            <td>1212</td>
            <td>
                <a href="/MedicineManagement/DeleteMedicine/1/3">Delete</a> 
            </td>

        </tr>

    </tbody>

</table>

推荐答案

很抱歉让您失望,但是您使用的 WebGrid 帮助程序不允许您在< tr> 元素而不是 class 元素.

I am sorry to disappoint you but the WebGrid helper that you are using doesn't allow you to set any other attribute on the <tr> element than the class.

从ASP.NET MVC源代码中检查以下摘录,该源代码负责生成< tr> :

Checkout the following excerpt from the ASP.NET MVC source code which is responsible for generating the <tr>:

private string GetTableBodyHtml(IEnumerable<WebGridColumn> columns, string rowStyle, string alternatingRowStyle, string selectedRowStyle)
{
    StringBuilder builder = new StringBuilder();
    int rowIndex = 0;
    foreach (WebGridRow row in this.Rows)
    {
        string str = this.GetRowStyle(rowIndex, rowStyle, alternatingRowStyle, selectedRowStyle);
        TagBuilder builder2 = new TagBuilder("tr");
        if (!string.IsNullOrEmpty(str))
        {
            builder2.MergeAttribute("class", str);
        }
        foreach (WebGridColumn column in columns)
        {
            string str2 = (column.Format == null) ? HttpUtility.HtmlEncode(row[column.ColumnName]) : Format(column.Format, row).ToString();
            builder2.InnerHtml = builder2.InnerHtml + GetTableCellHtml(column, str2 ?? string.Empty);
        }
        builder.Append(builder2.ToString());
        rowIndex++;
    }
    return builder.ToString();
}

因此,您唯一的机会是编写一个完全自定义的帮助程序,使用另一个可以提供更多控制权的帮助程序,例如MvcContrib.Grid和Telerik Mvc Grid,或使用javascript将其附加到DOM.

So your only chance is to write a completely customized helper, use another helper which gives you far more control such as MvcContrib.Grid and Telerik Mvc Grid or use javascript to append it to the DOM.

这篇关于简单的MVC Web网格问题.我只想向表中的每一行添加唯一的ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆