2017-09-14 25 views
0

我一直在努力尋找答案。我有一個頁面,顯示記錄不是在gridview中,而是通過風格的div。我已經設法爲每條記錄創建一個按鈕。爲每個不使用gridview的記錄創建動態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

什麼類型是'系統'? – mxmissile

+0

嗨系統只是一個分區。

回答

0

當數據綁定你可以使用CommandArgument屬性:在點擊事件

btn.CommandArgument = id 

然後:

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

謝謝。但不幸的是,當我點擊按鈕時,沒有任何反應。它只是刷新/重新加載頁面。 –

+0

你可以確認btn_Click被擊中了嗎?你可以在PostBack上重新綁定'Systems'嗎? – mxmissile

+0

我如何確認?另外,你如何重新綁定一個div。抱歉。我仍在學習。 –

0

我用這種方式管理你的控件,使用list(of whatever)。將新控件添加到列表中,然後從列表對象中添加您的點擊處理程序。您將擁有所有項目以指向該單一功能或子項目。然後你會喜歡你做直播。

你正在做的是重複使用相同的變量btn,因爲你沒有保持對象本身的工作。這就是你列出清單的原因。比陣列更容易管理。讓btn成爲你班上最好的(按鈕)列表。在添加之前,不要忘記創建列表。 BTN =新名單(按鈕)

您可以設置每個按鈕的名稱找出一個去與什麼記錄

+0

嗨。感謝您的回覆。不幸的是,我仍然在學習,所以我不知道如何去做你所建議的。 –

+0

如果它可以幫助任何人來幫助我。我已修改問題以包含此頁面的整個代碼。 –

0

我想我已經sussed它。它似乎與上面的代碼完美地工作,現在我已將它移動到頁面加載事件而不是預渲染。

感謝您的幫助。