Default.aspx :(ご覧のとおり、2つのフィールドを持つデータベーステーブルからのデータを使用してページ上に動的にテーブル行を生成しました:ID
および)(例をわかりやすくするために、studentname
以下のコードから削除しました)<table>,<tr>,<td>
<asp:AccessDataSource ID="AccessDataSource1" runat="server"
DataFile="C:\db1.mdb"
SelectCommand="SELECT * FROM [table1]">
</asp:AccessDataSource>
<asp:DataList ID="DataList1" runat="server" DataSourceID="AccessDataSource1"
DataKeyField="ID" RepeatColumns="3" RepeatDirection="Horizontal">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# "ID: " & Eval("ID") %>'></asp:Label>
<asp:Label ID="Label2" runat="server" Text='<%# Eval("studentname") %>'></asp:Label>
<asp:Button ID="Button1" runat="server" Text="Delete Row Button" OnClick="Button1_Click" />
</ItemTemplate>
</asp:DataList>
したがって、データベーステーブルに2つのレコードがある場合、このようなページに2行のテーブルが生成され、各行に削除ボタンが作成され
ます
。1 | name1 | 行の削除ボタン
----------------
| 2 | name2 | 行の削除ボタン
----------------
Default.aspx.vb :(コマンドボタンのコードビハインド)
Dim x As New Connection
Protected Sub Button1_Click(ByVal a As Object,
ByVal b As System.EventArgs)
x.deleterowclass("1")
End Sub
connection.vb :(レコードの削除を行う場所で作成したクラス)
Imports System.Data.OleDb
Imports System.Data
Imports Microsoft.VisualBasic
Dim str As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\db1.mdb"
Dim con As New OleDbConnection(str)
Public Sub deleterowclass(ByVal ID As Integer)
con.Open()
Dim adp As New OleDbCommand("Delete * from table1 where ID=" & ID, con)
adp.ExecuteNonQuery()
con.Close()
End Sub
問題:
-上記のボタンコードは、アクセスデータベースから、指定したIDが「1」のレコードのみを削除します。-データベース内の各レコードには、ページの各行の横にx.deleterowclass("1")
呼び出される新しいボタンが作成されているため、
Button1
それが機能するので、それが問題なのか、問題を解決するための利点なのかわからない。
私の質問:
レコードの横(つまり、ページの行の横)にあるボタンをクリックしてレコードを削除するにはどうすればよいですか?私の考えはIDも処理してどこかに渡すことですが、残念ながらそれをどのように達成できるかわかりません。このような多くのパラメーターを試しましOnClick="Button2_Click(<%# Eval("ID") %>)
たが、エラーメッセージで失敗しました:サーバータグが適切に形成されていません。
編集:解決策:
どうもありがとうございました。誰かが役に立つと思うかもしれない場合に備えて、以下のVBの対応するコードを以下に示します。Default.aspxのボタンコード(あなたの答えと同じですが、私もここに置くと思いました):
<asp:Button ID="Button1" runat="server" Text="Delete Row Button" OnClick="Button1_Click" CommandArgument='<%# Eval("MyID") %>'/>
VBのOnClickコード:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim mybutton As Button = DirectCast(sender, Button)
x.deleterowclass(Convert.ToInt32(mybutton.CommandArgument))
End Sub