2010-02-22 3 views
0

LinkButton을 동적으로 만들 때 데이터베이스 ID를 기억하기위한 int "Value"속성을 포함하도록 LinkButton ASP.NET 컨트롤에서 상속 한 클래스가 있습니다. 이것은 포스트 백에서 해당 ID를 기반으로하는 일부 데이터베이스 기반 컨텐츠를로드 할 수 있도록하기 위해서입니다.간단한 ASP.NET/C# 문제 - 이벤트

내 질문은 : C#에서 이것을 달성하는 간단한 방법이 있습니까? 나는 인터넷을 둘러 보았고 대의원에 관한 많은 정보를 가지고있다 & 커스텀 이벤트 핸들링은 내가해야 할 일에 지나치게 복잡 해 보인다. 대리자, 제네릭 & 이벤트에 대해 읽고 있어야합니까? 아니면 LinkButtons Click 이벤트를 재정 의하여 ID를 캡처하고 DB를 쿼리 할 수 ​​있습니까?

나는 동적으로 내 컨트롤을 만드는거야 내가 컨트롤을 추가 한 동적의 클릭 이벤트에 이벤트를 연결하는 방법을 잘 모르겠어요

편집 할 수 있습니다. CommandArgument 속성에 대한 아래의 요점을 가지고 있지만 누구나 CommandArgument를 동적으로 생성 된 컨트롤과 함께 사용하는 예가 있습니까?

var lnkbtnTitle = new LinkButton(); 

      lnkbtnTitle.CssClass = "ABC"; 
      lnkbtnTitle.ToolTip = Description; 
      lnkbtnTitle.Text = Name + ' ' + Version; 
      lnkbtnTitle.CommandArgument = ID.ToString(); 
      pnlHelpGuidesView.Controls.Add(lnkbtnTitle); 

답변

0

좋아, 여기에 내 자신의 문제를 해결하고 내가 전에 만난 신참 문제로 밝혀졌습니다! 나는 ... 다른 사람의 이익을 위해 여기에 해상도를 게시 할 수있는 잠재적 당황 가치가 생각

동적 당신이 다시 게시 다시 작성해야합니다 CONTROLS 만들 때

이 항상 나에게 반 직관적 인 듯하지만, 내 컨트롤 작성 코드에 if (! IsPostBack) 지시문이있어서 이벤트를 시도한 솔루션이 실행되지 않았다는 것을 의미했습니다. 이것은 포스트 백에서 다시 생성하지 않았기 때문에 컨트롤이 더 이상 존재하지 않았기 때문입니다. 더 복잡한 동안 내 자신의 질문에 대한 대답에서

및 온보드 여기에 언급 된 점을 고려하여 다음과 같은 코드가 작동 ...

private void DrawHelpGuide(int ID, int Type, string Name, string Description, string Version, string URL) 
    { 
      var lnkbtnTitle = new LinkButton(); 

      lnkbtnTitle.CssClass = "HelpGuideTitle"; 
      lnkbtnTitle.ToolTip = Description; 
      lnkbtnTitle.Text = Name + ' ' + Version; 
      lnkbtnTitle.CommandArgument = ID.ToString(); 
      lnkbtnTitle.Click += new EventHandler(lnkbtnTitle_Click); 
      pnlHelpGuidesView.Controls.Add(lnkbtnTitle); 
     } 

    void lnkbtnTitle_Click(object sender, EventArgs e) 
    { 
     var ClickedButton = (LinkButton)sender; 
     var id = int.Parse(ClickedButton.CommandArgument); 
    } 

는 지금 또한, 다양한 버전은 내가 이전에 쓴 실현 또한 효과가 있었을 것입니다! 내 구체적인 경우에는 CommandArgument 메서드가 완벽하게 적합하지만 이전에 수행 한 것보다 대리자 & 이벤트의 개념을 "얻습니다"라고 매우 기쁩니다.

4

난 당신이 그냥 "ID"속성을 연결하기 위해하는 LinkButton에서 상속 필요가 있다고 생각하지 않습니다,하는 LinkButton는 "CommandArgument"이 ID를 저장하는 데 활용할 수있다라는 속성을 가지고 있으며, 다시 게시에 보냈습니다.

1

LinkButton 컨트롤에 이미 CommandArgument 속성이 있습니다. Click 또는 Command 이벤트를 처리하고 CommandArgument를 int로 캐스팅하면 ID를 캡처 한 것입니다.