2012-04-18 4 views
0

나는 각 앵커에 대해 코드 뒤에 앵커를 만들고 버튼을 삭제하려고합니다. 데이터베이스에서 지정된 행을 삭제할 수 있도록 ID가있는 링크의 각 이벤트 처리기를 호출 할 수 있는지 알 수 없습니다. 이것이 내가 한 일이다. 앵커 및 ASp 버튼을 만들었지 만 그 ImageID로 어떻게 호출 할 수 있는지 확신 할 수 없습니다. 가능한가? 그렇다면 어떻게? 많은 감사드립니다!! 이것은 C#, asp.net에 있습니다.버튼 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를 읽음으로써 어떤 버튼이 들리는지 알 수 있습니다. –

+0

코드 숨김으로이를 생성하지 마십시오. Repeater를 사용하고 Command 단추를 만들고 Repeater.ItemCommand를 사용하고 CommandArgument를 대신 설정하십시오. 더 깔끔하고, 코드를 적게 사용하고, 더 표준적이고, 더 쉽습니다. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemcommand.aspx (또는 원하는 경우 DataList를 사용하십시오.) – David

답변

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

감사합니다! 내가 반쯤가는 데 도움이된다. ImageID 또는 뭔가 같은 새로운 EventHandler (button_Click)에서 뭔가를 보낼 수 있습니까 ?? – Ram

+0

이것 좀보세요 http://tackoverflow.com/questions/4815629/how-do-i-pass-variables-to-a-buttons-event-method –

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 
} 

희망이 도움이됩니다. :)

관련 문제