0

私はウェブサイトを作成しており(これは初心者です)、検索結果を 3 つの div に追加しようとしています。しかし、データベースから div にテキストを追加するときに問題が発生します。正しく取得されます。しかし、文字列(合計3つのdiv、idはそれぞれdiv1、div2、div3です。文字列は「div」+ DivCount.ToString、DivCountは0(ループし、ループごとに+1が追加されます)をコマンドに変換します。コード, 他の方法も高く評価されます. ありがとう. コードは以下にあります, ところで.

Default.aspx.vb

Imports Microsoft.VisualBasic
Imports System.Data.SqlServerCe

Partial Class Pages_Default
    Inherits System.Web.UI.Page

    'Project Variables
    Dim ProjectDirectory As String = AppDomain.CurrentDomain.BaseDirectory.ToString

    'ConnectAndAddItemsToDropdownList Dim
    Dim SQLCommandString As String
    Dim SQLConnectionString As String = "Data Source=" + ProjectDirectory + "App_Data\MainDatabase.sdf; Persist Security Info=False;"

    Dim SQLConnection As New SqlCeConnection(SQLConnectionString)
    Dim SQLAdapter As SqlCeDataAdapter
    Dim SQLReader As SqlCeDataReader
    Dim Executor As New MSScriptControl.ScriptControl

    Dim DivCount As Integer = 0
    Dim DivCurrent As String

    Public Sub ConnectAndAddItemsToDropdownList()
        DropDownList1.Items.Clear()
        SQLConnection.Open()
        SQLCommandString = "SELECT BookName FROM [Anthony Horowitz] WHERE (BookName LIKE '" + SearchTextBox.Text + "%')"
        Dim SQLCommand As New SqlCeCommand(SQLCommandString, SQLConnection)
        SQLReader = SQLCommand.ExecuteReader()
        While SQLReader.Read()
            DivCount = +1
            DivCurrent = "div" + DivCount.ToString
            Executor.Language = "VBScript"
            Executor.Eval(DivCurrent.ToString + ".InnerText = SQLReader(""Bookname"")")
        End While
        SQLConnection.Close()
    End Sub

    Protected Sub SearchTextChanged(sender As Object, e As EventArgs) Handles SearchTextBox.TextChanged
        ConnectAndAddItemsToDropdownList()
    End Sub
End Class

デフォルト.aspx

<%@ Page Language="VB" CodeFile="Default.aspx.vb" Inherits="Pages_Default" AutoEventWireUp="False"%>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body id="MainPage" runat="server">
        <form id="form1" runat="server">
            <asp:TextBox ID="SearchTextBox" Text="Search for a book here..." runat="server" AutoPostBack="true" OnTextChanged="SearchTextChanged"></asp:TextBox>
            <asp:DropDownList ID="DropDownList1" runat="server" Height="17px" Width="105px"></asp:DropDownList>
            <div id="div1" runat="server">Nothing Interesting</div>
            <div id="div2" runat="server">Nothing Interesting</div>
            <div id="div3" runat="server">Nothing Interesting</div>
        </form>
    </body>
</html>

上記の結果は「必要なオブジェクト: 'div1'」です。

4

1 に答える 1

0

次の 3 つの理由から、そのようなデータを取得して要素に入れることはできません。

  • スクリプトは SQL リーダーにアクセスできません。
  • 要素はまだ存在しません。すべてのサーバー コードは、その前に既に終了しています。
  • 要素が存在するようになると、それらは別のコンピューターに存在します。

テキストが必要な場所にサーバー コントロールをマークアップに配置します。

<div id="div1" runat="server"><asp:Label runat="server" id="label1" Text="Nothing Interesting" /></div>

コントロールへの参照を取得し、配列に配置して、簡単にアクセスできるようにします。

Dim labels(2) as Label
labels(0) = label1
labels(1) = label2
labels(2) = label3

これで、コントロールにデータを配置できます。

While SQLReader.Read()
  labels(DivCount).Text = SQLReader("Bookname")
  DivCount = +1
End While
于 2013-01-13T19:08:44.007 に答える