2010-12-09 5 views
0

한 번 linkButton이 commandArgument에서 둘 이상의 값을 전달하도록 요청한 다음 임의의 문자로 구분 된 여러 값의 문자열을 전달하고 그 값으로 분할하는 방식에 도달했습니다. 원래 부분 ... 그게 잘 풀리지 않았어. 나는 쪼개짐이 무엇이 잘못되었는지 모른다.LinkButton 다중 값 가능한 깨끗한 솔루션을 전달

이제 LinkButton의 사용자 정의 컨트롤을 만들고 속성을 추가하여 nedeed 값을 허용하는 유일한 해결책을 시도해 보았습니다! ... 내 2 가지 접근 방식에있어 잘못된 점을 알려주시겠습니까? link text

하고 이것은 사용자 제어 방식에 대한 코드 >>

MultivaluedLinkButton.ascx이다 :

첫번째 질문은 여기에서 찾을 수

<asp:LinkButton ID="LnkBtnSort" runat="server" Text="Sort" OnClick="LnkBtnSort_Clicked"/> 

MultivaluedLinkButton.ascx.cs :

public partial class MultivaluedLinkButton : System.Web.UI.UserControl 
{ 
    public event EventHandler Click; 
    private int _sortingType; 
    private string _sortingFactor; 
    private string _text; 

public int SortingType 
{ 
    set { _sortingType = value; } 
    get { return _sortingType; } 
} 

public string SortingFactor 
{ 
    set { _sortingFactor = value; } 
    get { return _sortingFactor.ToString(); } 
} 

//public string Text 
//{ 
// set { _text = value; } 
// get { return _text.ToString(); } 
//} 

protected void LnkBtnSort_Clicked(object sender, EventArgs e) 
{ 
    if(Click != null) 
    { 
     this.Click(this, EventArgs.Empty); 
    } 
} 

} 

마지막으로

protected void MultivaluedLinkButton1_Clicked(object sender, EventArgs e) 
    { 

     MultivaluedLinkButton ctrl = (MultivaluedLinkButton)sender; 

     using (SqlConnection cn1 = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString)) 
     { 
      using (SqlCommand cm1 = new SqlCommand(commandString2, cn1)) 
      { 

       cm1.Parameters.Add("@arrange_by_id", System.Data.SqlDbType.Int); 
       cm1.Parameters["@arrange_by_id"].Value = ctrl.SortingType; 
       cn1.Open(); 
       using (SqlDataReader dr1 = cm1.ExecuteReader()) 
       { 
        SortBy_rpt.DataSource = dr1; 
        SortBy_rpt.DataBind(); 
       } 
      } 
     } 
    } 

구현 페이지에서 중계기의 항목 템플릿 : aspx 페이지 안에 내 컨트롤의 구현 내가 보는 문제가

<ItemTemplate> 
    <uc1:MultivaluedLinkButton ID="MultivaluedLinkButton1" runat="server" OnClick="MultivaluedLinkButton1_Clicked" SortingType='<%#Eval("arrange_by_id")%>' /> 
    </ItemTemplate> 

답변

0

, 당신은 당신의 UserControl의 이벤트 핸들러를 가지고있는 당신을 결코 정말 사용합니다.

상위 페이지의 Page_Load에는 100 % 확신 할 수 없지만 처리기에 MultivaluedLinkButton1_Clicked 이벤트를 추가해야합니다.

MultivaluedLinkButton1.EventHandler_Click = new EventHandler(this.MultivaluedLinkButton1_Clicked); 
MultivaluedLinkButton1.LnkBtnSort.Click = MultivaluedLinkButton1.EventHandler_Click; 

은 기본적으로 당신은 사용자가하는 LinkButton를 클릭 할 때, 상위 페이지에 MultivaluedLinkButton1_Clicked()가 호출되어야한다고 말하고있다.

부모 페이지의 UserControl 속성에서 OnClick = "MultivaluedLinkButton1_Clicked"를 제거 할 수 있습니다.

+0

MultivaluedLinkButton1은 중계기 내부에 있으므로 액세스 할 수 없으므로 고유하지 않은 ID가됩니다 (MultivaluedLinkButton1_Clicked에 액세스 할 수 있음)! 답이 맞는지 또는 page_load! – lKashef