2010-04-17 40 views
0

我試圖創建一個簡單的按鈕,從數據庫中刪除一行。我想控制的ID設置爲類似delete_MATERIALID_button然而,當我這樣做:ASP.NET - 以編程方式生成刪除按鈕

<asp:Button ID='delete_<%# Eval("MatID") %>_button' runat="server" Text="Delete" /> 

我得到這個名字不能這樣會產生一個錯誤。

我知道必須有一個簡單的解決方案,我只是無法弄清楚。

+0

那個按鈕是一個GridView或類似的任何控制內? – 2010-04-17 18:52:01

+0

它在一箇中繼器內。 – WedTM 2010-04-17 18:57:13

回答

4

按鈕將不得不被命名爲像這樣:

<asp:Button ID='<%# Eval("MatID", "delete_{0}_button") %>' runat="server" Text="Delete" /> 

但是,正如Shuwaiee說,使用CommandArgument可能是一個更好的爲id的地方。

CommandArgument='<%# Eval("MatID")%>' 
2

爲什麼不保存ID在CommandArgument容易對付

+0

我該如何去做? – WedTM 2010-04-17 18:56:46

+0

看到Scotte Post他比我快,p – Shuwaiee 2010-04-17 19:00:29

0

你不能像這樣做,U需要指定一個固定的ID存在,並命令名稱(如刪除)和u可以通過在命令參數該ID ...和按需事件你將獲得這兩個值,命令名稱和命令參數...

niitn DHIMAN

0

您也可以在轉發的OnItemDataBound事件中添加命令參數值。在這種情況下,您可以訪問數據項,因此可以非常輕鬆地從數據項對象中獲取ID,找到當前綁定行的當前刪除按鈕,並將命令參數應用於該控件。

例如:

protected void rptrExample_OnItemDataBound(object Sender, RepeaterItemEventArgs Args) 
    { 
     if (Args.Item.ItemType == ListItemType.Item || Args.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      SomeBusinessObj Obj = (SomeBusinessObj)Args.Item.DataItem; 

      Button btnDelete = (Button)Args.Item.FindControl("btnDelete"); 
      btnDelete.CommandArgument = Obj.ID; 
     } 
    }