row number
MVCWebGridのように列が必要です。どうすればいいですか?
質問する
22480 次
5 に答える
11
これは本当に素晴らしいアプローチですが、並べ替えやページングを使用すると、RowNumber
値はページの1から始まりません。
私のプロジェクトでは、WebGridのページング/並べ替えとは関係なく、行のインデックスを知る必要がある場合があり、次の解決策に出くわしました。
grid.Column(
Header: "RowNumber",
Format: item => item.WebGrid.Rows.IndexOf(item) + 1
)
于 2013-01-09T08:48:36.110 に答える
9
行番号を示すプロパティを含むビューモデルを使用できます。
次のドメインモデルがあるとします。
public class DomainModel
{
public string Foo { get; set; }
}
次に、ビューの要件に対応するビューモデルを作成します。
public class MyViewModel
{
public int RowNumber { get; set; }
public string Foo { get; set; }
}
その後:
public ActionResult Index()
{
// fetch the domain model from somewhere
var domain = Enumerable.Range(1, 5).Select(x => new DomainModel
{
Foo = "foo " + x
});
// now build the view model
// TODO: use AutoMapper to perform this mapping
var model = domain.Select((element, index) => new MyViewModel
{
RowNumber = index + 1,
Foo = element.Foo
});
return View(model);
}
もちろん、ビューはビューモデルに強く型付けされます。
@model IEnumerable<MyViewModel>
@{
var grid = new WebGrid(Model);
}
@grid.GetHtml(
columns: grid.Columns(
grid.Column("RowNumber"),
grid.Column("Foo")
)
)
ここで、なんらかの愚かな理由でビューモデルを使用したくないと仮定しましょう。この場合、必要に応じてビューをスパゲッティコードに変えることができます。
@model IEnumerable<DomainModel>
@{
var grid = new WebGrid(Model.Select((element, index) => new { element, index }));
}
@grid.GetHtml(
columns: grid.Columns(
grid.Column("RowNumber", format: item => item.index + 1),
grid.Column("Foo", format: item => item.element.Foo)
)
)
于 2012-08-20T08:35:10.950 に答える
6
次のコードを追加するだけです
grid.Column(header: "No."
,format: item => item.WebGrid.Rows.IndexOf(item) + 1
+ Math.Round(Convert.ToDouble(grid.TotalRowCount / grid.PageCount) / grid.RowsPerPage)
* grid.RowsPerPage * grid.PageIndex)
詳細については、このリンクを確認してください
これが誰かに役立つことを願っています
于 2014-09-04T14:58:14.603 に答える
4
@{
int i=0;
foreach (var item in Model) {
<tr>
<td>
@i
</td>
<td>
@Html.DisplayFor(modelItem => item.Expense)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id = item.Id }, new { onclick = "return confirm('Are you sure you wish to delete this record?');" })
</td>
</tr>
i++;
}
}
これを試して
于 2012-08-20T09:29:36.657 に答える
-1
これを追加:
grid.Column(header: "No.",
format: item => item.WebGrid.Rows.IndexOf(item) + 1 + Math.Round(Convert.ToDouble(grid.TotalRowCount / grid.PageCount) / grid.RowsPerPage) * grid.RowsPerPage * grid.PageIndex)
于 2016-09-01T12:56:59.223 に答える