ページをどのように設定するかを検討する必要があります。これを行うには多くの方法があります。
ページの読み込み時にすべてのレコードを取得したら、それらをそれぞれのコントロールに割り当てることができます。表示するには、それらが多くのページにある場合は、MultiViewコントロールを使用できます。
マークアップ
<asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0">
<asp:View ID="View1" runat="server">
<asp:Label ID="lblRecordOne" runat="server" />
</asp:View>
<asp:View ID="View2" runat="server">
<asp:Label ID="lblRecordTwo" runat="server" />
</asp:View>
</asp:MultiView>
<asp:Button ID="btNext" runat="server">Next</asp:Button>
コードビハインド
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Call your method that loads the data to results
Dim results() As String = loaddata()
'Set the data
lblRecordOne.Text = results(0)
lblRecordTwo.Text = results(1)
End Sub
Protected Sub btNext_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btNext.Click
'There is a much better way to go about this, but for this
'demos sake here is the basic idea
MultiView1.SetActiveView(View2)
End Sub
覚えておきたいのは、各ビューコントロールにはMultiView内にインデックスがあるということです。したがって、アクティブなビューが何であるかを追跡する方法が必要です。ユーザーが次のボタンをクリックすると、ビューが1つずつ進みます。
MVCアプリケーションに関して
コントローラ
public class HomeController
{
// /Home/GetRecord/{id}
public ViewResult GetRecord(int? id)
{
int modelID;
if (id == null) { modelID = 0; }
ViewBag.CurrentID = modelID;
// This will send the value to the view
// I would refactor loaddata to only return one record at a time
// based on an id or an index
return View(loaddata(modelID));
}
}
意見
<label>@Model.Result</label>
@Html.ActionLink("GetRecord", "Home", new { id = ViewBag.CurrentID + 1 })
ActionLinkをクリックするたびに、1つずつ設定されたレコードが進行します。
最初のレコードがHelloで、2番目のレコードがWorldの場合:
/ Home / GetRecord/0-こんにちは
/ Home / GetRecord/1-ワールド
申し訳ありませんが、C#に切り替えました。VBよりもフリーハンドでC#を作成する方が好きです。コードはVBでも非常に似ています。http://converter.telerik.com/に移動するためにコンバーターが必要な場合。