2017-09-14 3 views
0

私はしばらくの間、これに対する答えを探していました。私はグリッドビューではなく、スタイル付きdivを介してレコードを表示するページを持っています。私は各レコードのボタンを作成することができました。グリッドビューを使用しない各レコードの動的DELETE asp.netボタンを作成

Imports sc 
Imports sq 
Imports System.Data 

Partial Class _Default 
Inherits System.Web.UI.Page 

Dim c As New sc 
Dim q As New sq 

Public IsAdmin As String = "0" 

Private Sub _Default_PreRender(sender As Object, e As EventArgs) Handles Me.PreRender 
    c.ReadS(q.IsAdminStr) 
    If c.sqldr.Read Then IsAdmin = "1" 
    c.con.Close() 

    If IsAdmin = "1" Then admin.Visible = True 

    c.FillDS(q.CurrStatStr) 

    For Each dr As DataRow In c.sqldt.Rows 
     systems.Controls.Add(New LiteralControl("<div class=""system""><table width=""100%""><tr><td width=""50%"" style=color:#00a0d0>")) 
     systems.Controls.Add(New LiteralControl(dr("system"))) 
     systems.Controls.Add(New LiteralControl("</td><td width=""50%"" align=""right"" style=color:" & dr("colourhex") & ">" & dr("status"))) 
     systems.Controls.Add(New LiteralControl("</td></tr>")) 
     systems.Controls.Add(New LiteralControl("</table>")) 

     If dr("status").ToString <> "Running" Then 
      systems.Controls.Add(New LiteralControl("<hr><table width=""100%""><tr><td>" & dr("comments") & "</td></tr></table>")) 
     End If 

     If IsAdmin = "1" Then 
      systems.Controls.Add(New LiteralControl("<div class=""sysadmin"">")) 
      Dim btn As New Button 
      btn.CommandArgument = dr("id") 
      btn.Text = "Update" 
      btn.CssClass = "btn" 
      AddHandler btn.Click, AddressOf btn_click 
      systems.Controls.Add(btn) 
      systems.Controls.Add(New LiteralControl("</div>")) 
     End If 

     systems.Controls.Add(New LiteralControl("</div>")) 

    Next 

End Sub 

Public Sub btn_click(ByVal sender As Object, ByVal e As EventArgs) 
    Dim btn As Button = CType(sender, Button) 
    Response.Redirect("Subscribe.aspx?id=" & btn.CommandArgument) 
    MsgBox(btn.CommandArgument) 
End Sub 

End Class 

私はresponse.redirectをテストするために追加しましたが、これは機能しません。どのように私は、私が押されたボタンのレコードのIDに関連する何かを追加したボタンを取得します。

これは意味のある人たちです。

ありがとうございます。 (これの一部が誤ってフォーマットされている場合、私はまだスタックオーバーフローに新しいですお詫び申し上げます。。)

+0

どのようなタイプが 'systems'ですか? – mxmissile

+0

こんにちは、システムは単なるdivです。

答えて

0

データバインディングするときは、CommandArgumentプロパティを使用することができますあなたのクリックイベントに続いて

btn.CommandArgument = id 

を:

Response.Redirect("Subscribe.aspx?id=" & btn.CommandArgument) 
+0

ありがとうございます。しかし残念ながら、ボタンをクリックしても何も起こりません。ページをリフレッシュ/リロードするだけです。 –

+0

btn_Clickがヒットしていることを確認できますか? PostBackに 'Systems'を再バインドできますか? – mxmissile

+0

どうすれば確認できますか?また、divをどのように再バインドしますか?ごめんなさい。私はまだ学んでいます。 –

0

私はあなたのコントロールを管理するこの方法でリストを使用します。新しいコントロールをリストに追加し、リストオブジェクトからクリックハンドラを追加します。あなたは、その単一の関数またはサブを指し示すすべての項目を持っています。それから、あなたはダイレクトキャストでやったようにします。

あなたがやっていることは、オブジェクト自体が機能しないので、間違った箇所で同じ変数btnを再利用することです。これがリストを作る理由です。アレイより簡単に管理できます。 btnを(ボタンの)クラスのトップにする。追加する前にリストを作成することを忘れないでください。 (ボタンの)BTNは=新しいリスト

にあなたは1、私はそれをsussedたと思う何

+0

こんにちは。お返事をありがとうございます。残念ながら、私はまだ学んでいるので、あなたがアドバイスしたことをどうやってやるかわからない。 –

+0

誰かが私を助けてくれるならば。このページのコード全体を含めるように質問を修正しました。 –

0

を記録して行くと把握する各ボタンの名称を設定することができます。前のレンダリングではなくページロードイベントに移動したので、上記のコードでは完全に機能するようです。

ご協力いただきありがとうございます。

関連する問題