2012-04-18 63 views
0

我想在后面的代码中创建锚,并为每个锚都删除按钮。我不知道如果我可以调用每个具有ID的链接的事件处理程序,以便我可以删除从数据库指定的行。这就是我所做的。我创建了一个锚点和一个ASp按钮,但不知道如何使用该ImageID调用它。可能吗?如果是这样如何?提前感谢!这是在C#中,asp.net。如何在代码后面调用Button OnCLick事件处理程序的值?

HtmlAnchor apdf = new HtmlAnchor(); 
apdf.ID = Guid.NewGuid().ToString("N"); 
string ImageID = ""; 
if (dsreport != null && dsreport.Tables[0].Rows.Count > 0) 
{ 
     apdf.InnerText = dsreport.Tables[0].Rows[0]["ImageName"].ToString(); 
     apdf.Attributes.Add("style", "font-weight: bold; font-size: 13px; margin: 0px; font-family: Arial; color: #1e7c9b; text-decoration: underline"); 
     apdf.Target = "_blank"; 
     ImageSalesID = dsreport.Tables[0].Rows[0]["ImageID"].ToString(); 
     apdf.HRef = "PDFdownload.aspx?ID=" + ImageID; 

} 
Button btnDelete = new Button(); 
btnDelete.ID = Guid.NewGuid().ToString("N"); 
btnDelete.OnClick += Eventhandler; 
btnDelete.Text = "Delete"; 
+0

不确定你在问什么,但你可以通过阅读被点击的按钮的ID来知道按钮是否被固定 – 2012-04-18 21:48:59

+0

不要在后面的代码中创建这些按钮。使用Repeater并创建一个Command按钮并使用Repeater.ItemCommand并设置CommandArgument。它更干净,使用更少的代码,更标准,更容易。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemcommand.aspx(如果您愿意,也可以使用DataList)。 – David 2012-04-18 21:51:42

回答

2

我希望这可以帮助你以某种方式

Button btnDelete = new Button(); 
    btnDelete.Click += new EventHandler(button_Click); 

    protected void button_Click (object sender, EventArgs e) 
    { 
     Button button = sender as Button; 
     string buttonid = button.ID.ToString() 
     // identify which button was what row to update based on id clicked and perform necessary actions 
    } 
+0

谢谢!它帮助我走了一半。是否有可能发送一些新的EventHandler(button_Click)像ImageID或东西? – Ram 2012-04-18 21:56:32

+0

看看这个http://stackoverflow.com/questions/4815629/how-do-i-pass-variables-to-a-buttons-event-method – 2012-04-18 22:04:55

0

据我所知,你按下一个按钮,然后想删除东西是关系到该按键;如果是这种情况,我会建议在按钮上使用CommandArgument属性。您也可以指定CommandName,这可以帮助确定发生什么类型的操作。这里有一个简单的例子:

<asp:Button ID="btnDelete" runat="server" CommandName="DeleteRow" CommandArgument="1" Text="Delete Row 1" OnClick="DeleteRow" /> 
<asp:Button ID="btnDelete" runat="server" CommandName="DeleteRow" CommandArgument="2" Text="Delete Row 2" OnClick="DeleteRow" /> 
<asp:Button ID="btnDelete" runat="server" CommandName="DeleteRow" CommandArgument="3" Text="Delete Row 3" OnClick="DeleteRow" /> 

所有3个按钮都会触发相同的事件。然后在实际事件本身中,您可以检查发件人的命令参数是什么,通过将其转换为Button,就像这样。

protected void DeleteRow(object sender, EventArgs e) 
{ 
    var buttonClicked = sender as Button; 
    var rowId = buttonClicked.CommandArgument; 
    var action = buttonClicked.CommandName; 

    // do something depending on the action and the argument 
} 

希望这会有所帮助。 :)

相关问题