1

aspでクエリを実行し、それを配列に格納するにはどうすればよいですか。次に、配列を使用して、ページを毎回更新することなく、各レコードを調べます。

例えば

Sub loaddata()
    Dim conn As New IfxConnection(connectionstring)

    Dim results() As String
    Dim i As Integer = 0

    conn.ConnectionString = connectionstring
    Try
        conn.Open()
        MsgBox("Made connection!")

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
    Dim cmd As New IfxCommand("Select name from table", conn)
    Dim reader As IfxDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
    While reader.Read()
        results(i) = reader("name")
        i += 1

    End While
    reader.Close()
    conn.Close()
End Sub

結果はresults(i)に保存されます

次のボタンがあり、結果配列の次の項目に移動するたびに表示されるとします。ページを更新したくありません。それ、どうやったら出来るの?

4

2 に答える 2

1

結果をコントロールまたはRegisterClientScriptを使用する変数にレンダリングし、JavaScriptでナビゲーションを制御する必要があります

于 2012-06-13T14:30:04.560 に答える
1

ページをどのように設定するかを検討する必要があります。これを行うには多くの方法があります。

ページの読み込み時にすべてのレコードを取得したら、それらをそれぞれのコントロールに割り当てることができます。表示するには、それらが多くのページにある場合は、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/に移動するためにコンバーターが必要な場合。

于 2012-06-13T14:39:56.780 に答える