2015-09-04 53 views
0

是否有更簡單的方法在空webgrid中顯示「找不到記錄」?以下是我擁有的適用於我的代碼。但是,我不想在其他選項卡的else塊中創建HTML表格。在webgrid中顯示「找不到記錄」c#網頁

@if (Page.Tab == "DisplayGrid") 
{ 
    if (Page.IncompleteCount > 0) 
    { 
     var grid = new WebGrid(Page.DisplayData, rowsPerPage: 10, defaultSort: "UserName", canSort: true); 
     @grid.Pager(mode: WebGridPagerModes.All, previousText: "previous", nextText: "next", numericLinksCount: 20) 
     @grid.GetHtml(columns: grid.Columns(
      grid.Column("UserName", "User"), 
      grid.Column("Column1", "Column 1", format: @<div><a href="@Href("~/thispage/", item.UserId)" target="_blank">@item.UserId</a></div>), 
      grid.Column("Column2", "Column 2", format: @<div class="w400">@HH.TruncateString(@item.Column2, 125)</div>), 
      grid.Column("Column3", "Column 3", format: @<div class="w200"> @HH.FmtDate(@item.Column3)</div>)), 
       tableStyle: "simple", headerStyle: "hdr", rowStyle: "odd", alternatingRowStyle: "even", mode: WebGridPagerModes.All, previousText: "previous", nextText: "next", numericLinksCount: 20) 
    } 
    else 
    { 
     <table> 
      <tr bgcolor ="#336699"> 
       <td width="150"> 
        <font color="white"><b><u>User</u></b></font> 
       </td> 
       <td width="100"> 
        <font color="white"><b>Column 1</b></font> 
       </td> 
       <td width="300"> 
        <font color="white"><b>Column 2</b></font> 
       </td> 
       <td width="100"> 
        <font color="white"><b>Column 3</b></font> 
       </td> 
      </tr> 
      <tr> 
       <td colspan="4" align="center"> 
        <br /> 
        <b>No User Records Found</b> 

      <br /> 
       </td> 
      </tr> 
     </table> 
    } 
} 

其他選項卡的Webgrid具有不同的列和列數。確保我擁有正確的colspan#以確保「沒有找到記錄」的信息正確顯示(居中對齊)非常繁瑣。更簡單的方法來做到這一點?謝謝。

+0

如果你可以添加一個頁腳,它會做你想要的。在'@ grid.Table()'它有一個參數,但不是'@ grid.GetHtml()'。然後你可以使用'(Page.IncompleteCount> 0?Page.IncompleteCount:「No」)的值+「User Record」+(Page.IncompleteCount == 1?:「s」:「」)+「Found」總是列出在底部找到的記錄數(它看起來像另一行)。 – Pluto

+0

@ grid.Table()方法就是我正在尋找的。現在,我不得不建立分頁,因爲它沒有GetHtml()方法提供的功能(分頁功能)。感謝您指引我朝着正確的方向發展,冥王星。 – johnsonjames

+0

太棒了,我以前從未使用過WebGrid,因此您應該回答自己的問題並將其標記爲解決方案。 – Pluto

回答

0

下面是我如何計算出來的。由於冥王星提出了這個grid.Table方法:

{ 
     var grid = new WebGrid(Page.DisplayData, rowsPerPage: 10, defaultSort: "UserName", canSort: true); 
     var tfooter = (Page.IncompleteCount > 0 ? Page.IncompleteCount : "No") + " User Record" + (Page.IncompleteCount == 1 ? Page.IncompleteCount : "s") + " Found"; 

    @grid.Pager(mode: WebGridPagerModes.All, previousText: "previous", nextText: "next", numericLinksCount: 20) 
    @grid.GetHtml(columns: grid.Columns(
     grid.Column("UserName", "User"), 
     grid.Column("Column1", "Column 1", format: @<div><a href="@Href("~/thispage/", item.UserId)" target="_blank">@item.UserId</a></div>), 
     grid.Column("Column2", "Column 2", format: @<div class="w400">@HH.TruncateString(@item.Column2, 125)</div>), 
     grid.Column("Column3", "Column 3", format: @<div class="w200"> @HH.FmtDate(@item.Column3)</div>)), 
      tableStyle: "simple", headerStyle: "hdr", rowStyle: "odd", alternatingRowStyle: "even", footer: @<div><b>@tfooter</b></div>) 
} 

我不能使用模式,previousText和nextText屬性在grid.Table方法。我找到了一個關於如何爲這個方法添加分頁的參考,並且我正在處理它。

0

當你沒有記錄時,你能不能像這樣顯示一個div?

@if (Page.Tab == "DisplayGrid") 
{ 
    if (Page.IncompleteCount > 0) 
    { 
     var grid = new WebGrid(Page.DisplayData, rowsPerPage: 10, defaultSort: "UserName", canSort: true); 
     @grid.Pager(mode: WebGridPagerModes.All, previousText: "previous", nextText: "next", numericLinksCount: 20) 
     @grid.GetHtml(columns: grid.Columns(
      grid.Column("UserName", "User"), 
      grid.Column("Column1", "Column 1", format: @<div><a href="@Href("~/thispage/", item.UserId)" target="_blank">@item.UserId</a></div>), 
      grid.Column("Column2", "Column 2", format: @<div class="w400">@HH.TruncateString(@item.Column2, 125)</div>), 
      grid.Column("Column3", "Column 3", format: @<div class="w200"> @HH.FmtDate(@item.Column3)</div>)), 
       tableStyle: "simple", headerStyle: "hdr", rowStyle: "odd", alternatingRowStyle: "even", mode: WebGridPagerModes.All, previousText: "previous", nextText: "next", numericLinksCount: 20) 
    } 
    else 
    { 
     <div><b>No User Records Found</b></div> 
    } 
} 

感謝您的反饋。標題是否被重用,以便每次都是一樣的?如果是這樣,您可以將您的標記分配給一個變量,並使用@ Html.Raw()助手來每次渲染。

@{ 
    string noRecordsTable = "<table><tr> ..."; 
} 

,然後在其他條件:

@Html.Raw(noRecordsTable); 

這是另一種選擇。這樣你就不會在剃刀中一遍又一遍地寫表格了。

+0

我希望能夠在這些列標題下方顯示列標題(用戶名,列1,...)和「找不到用戶記錄」。 – johnsonjames