2010-04-17 90 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; 
     } 
    }