1

そのため、コードにわずかな問題があります。

私は小さな学校のプロジェクト (ブック ライブラリの再作成) に取り組んでいて、把握できない問題に遭遇しました。

そのため、ユーザーは本のリストを検索できます。リストが (DataList コントロールを介して) 取り込まれた後、ユーザーがクリックして自分の本を予約できる [今すぐ予約] (予約) という小さなボタンが表示されます。

これは、「Search.aspx」にある DataList コントロールのコードです。

<asp:DataList ID="DataList1" runat="server" DataKeyField="knjigaId" DataSourceID="SearchSqlDataSource" CssClass="searchControl">
                <ItemTemplate>
                <div class="pictureOfFoundBook">
                    <asp:Image ID="pictureOfFoundBook_imageLink" runat="server" ImageUrl='<%#"~/GetImage.aspx?knjigaId=" & Eval("knjigaId") & "&img=naslovnica" %>' />
                </div>
                <div class="descriptionOfFoundBook">
                    Naziv: <asp:Label ID="Label1" runat="server" Text='<%# Eval("naziv") %>' /><br />
                    Godina izdanja: <asp:Label ID="Label2" runat="server" Text='<%# Eval("godinaIzdanja") %>' /><br />
                    Broj stranica : <asp:Label ID="brojStranicaLabel" runat="server" Text='<%# Eval("brojStranica") %>' /><br />
                    Izdava&#269;: <asp:Label ID="NazivIzdavacaLabel" runat="server" Text='<%# Eval("NazivIzdavaca") %>' /><br />
                    Vrsta tiskovine : <asp:Label ID="NazivVrsteTiskovineLabel" runat="server" Text='<%# Eval("NazivVrsteTiskovine") %>' /><br />
                    Kategorija: <asp:Label ID="NazivKategorijeLabel" runat="server" Text='<%# Eval("NazivKategorije") %>' /><br /><br />
                    <asp:HyperLink ID="foundBookEditHL_adminOnly" runat="server" NavigateUrl='<%# "~/admin/knjigeEdit.aspx?knjigaId=" & Eval("knjigaId") %>'>Uredi knjigu</asp:HyperLink><br />
                    <asp:Button ID="rezervacijeButton" runat="server" Text="Rezerviraj" OnClick="rezervacijaClick" CommandArgument='<%# Eval("knjigaId") %>'/><br />
                    <asp:Label ID="rezStatusLabel" runat="server"></asp:Label>
                    <asp:PlaceHolder ID="rezStatusPlaceholder" runat="server"></asp:PlaceHolder>
                </div>
                <hr />
                </ItemTemplate>
            </asp:DataList>

DataList1 コントロールを Friend サブとして設定したので、別のサブからコントロールにアクセスできます。

Friend Sub DataList1_ItemCreated(sender As Object, e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemCreated
    End Sub

私は次のことをやろうとしていました; ボタン「rezervacijeButton」をクリックすると、関数「rezervacijaClick」が実行され、データベース内のテーブルにデータが入力されます。

Protected Sub rezervacijaClick(sender As Object, e As System.EventArgs)
            Dim Conn As New System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("LocalSqlServer").ToString)
            Dim cmd As New System.Data.SqlClient.SqlCommand
            Dim sql As New StringBuilder
            Dim rezstatus As Label = DataList1.FindControl("rezStatusLabel")

            sql.Append("INSERT INTO rezervacije(UserName, knjigaId) VALUES (@UserName, @knjigaId)")

            Dim buttonsender As Button = sender
            cmd.Parameters.AddWithValue("UserName", User.Identity.Name)
            cmd.Parameters.AddWithValue("knjigaId", buttonsender.CommandArgument)

            Conn.Open()
            cmd.CommandText = sql.ToString
            cmd.Connection = Conn
            cmd.ExecuteNonQuery()
            Conn.Close()

            buttonsender.Visible = False
            rezstatus.Text = "aaa"

            'Try
            '    rezstatus.Text = "testing..."
            'Catch ex As Exception
            '    exlabel.Text = "POGREŠKA"
            '    exlabel.ForeColor = Drawing.Color.Red
            'End 
        End Sub

関数「rezervacijaClick」で次にやりたかったことは、「予約」ボタンがクリックされた後、Label のテキスト値 (DataList1 コントロール内に存在する ID「rezStatusLabel」を持つ) を「SOME TEXT」に設定することでした。

しかし、ボタンをクリックした後、次のエラーが発生します。

 Object reference not set to an instance of an object. 
Line 21: 
Line 22:         buttonsender.Visible = False
Line 23:         rezstatus.Text = "aaa"
Line 24: 
Line 25:         'Try
4

2 に答える 2