0

SQL Server データベースを使用して ASP.Net Web アプリケーションを開発しており、ホームページが表示されるたびに、学校に在籍している学生の総数を ASP.Net ラベル コントロールに入力したいと考えています。

データセット デザイナーを使用して、次の厳密に型指定されたコントロールを作成しました。

DataTable: Students
DataSet: DataSetAllStudents
TableAdapter: StudentsTableAdapter

VB.Net コード ビハインド ファイルでは、次のコードを使用して、登録済みの学生の総数を取得するプロセスを開始しました。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    Dim studentsAdapter As New DataSetAllStudentsTableAdapters.StudentsTableAdapter
    Dim studentsTableRow As Knowledge_Academy.Students

    studentsTableRow = studentsAdapter.GetData

End Sub

次のコード行でエラーが発生します。

studentsTableRow = studentsAdapter.GetData

これはエラーです:

Value of type 'Knowledge_Academy.DataSetAllStudents.StudentsDataTable' cannot be 
converted to 'Knowledge_Academy.Students'.

GetData には、登録されている学生の総数を返すクエリが含まれています。また、この ASP.Net ラベル コントロールに返される値を取得する方法も知りたいです。

<asp:Label ID="LabelTotalNumberOfStudents" runat="server" Text="Label"></asp:Label>
4

1 に答える 1

1

まず、すべてのポストバックではなく、最初のロードでのみデータをロードするようにしてください。次に、すべての行で をGetData返すので、そのプロパティDataTableを使用できます。Rows.Count

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
        Dim daStudents = New DataSetAllStudentsTableAdapters.StudentsTableAdapter()
        Dim tblStudents = studentsAdapter.GetData()
        LblStudentNumber.Text = String.Format("{0}", tblStudents.Rows.Count)
    End If
End Sub

もちろんTableAdapter、生徒数のスカラー値を返す新しいクエリを に追加することをお勧めします。これにより、必要なリソースがはるかに少なくなります。

于 2012-11-09T16:39:15.330 に答える