2011-11-21 2 views
1

UpdatePanel을 사용하고 자바 스크립트로 리피터 내부에서 컨트롤의 '클래스'속성을 변경하는 데 문제가 있습니다. 여기리피터 내부에서 컨트롤의 클라이언트 측 "클래스"변경과 관련된 Updatepanel 문제

일부 코드 : 내가 "인 aButton"을 클릭 aspx--

<script type="text/javascript"> 
    function changeClass(ctl) { 
     if (ctl.className == "marked") { 
      ctl.className = "unmarked"; 
     } else { 
      ctl.className = "marked"; 
     } 
    } 
</script> 
<!-- some html --> 
<asp:UpdatePanel ID="upp" runat="server"> 
    <ContentTemplate> 
    <asp:Repeater ID="rpt1" runat="server" onitemdatabound="rpt1_ItemDataBound"> 
         <ItemTemplate> 
          <a id="aButton" runat="server" href="javascript:void(0)"> 
          <!-- some other controls --> 
          </a> 
         </ItemTemplate> 
        </asp:Repeater> 
    </ContentTemplate> 
</asp:UpdatePanel> 

--Codebehind--

protected void rpt1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     MyClass obj = (MyClass)e.Item.DataItem; 

     ((HtmlAnchor)e.Item.FindControl("aButton")).Attributes.Add("class", "marked"); 

     //some other code.... 
    } 
} 

//method called after the bind on 'rpt1' 
private void mymethod() 
{ 
    foreach (RepeaterItem ri in rpt1.Items) 
    { 
     HtmlAnchor aButton = (HtmlAnchor)ri.FindControl("aButton"); 
     if (Must-be-unmarked) 
      aButton.Attributes.Add("class", "unmarked"); 

     aButton.Attributes.Add("OnClick", "changeClass(this);"); 
    } 
} 

문제가 --on

, 클래스는 정상적으로 변경되지만, 코드 비하인드에 와서 컨트롤의 '클래스'를 통해 표시 또는 표시 해제 여부를 확인하면 실행시 표시되는 "aButton"이 아닌 리피터의 ItemDataBound에 표시된 컨트롤 만 가져옵니다. 팀 이자형. 클라이언트 측 코드에서 클래스 속성을 변경하면 서버 측이 그것에 대해 알 수 없습니다

private void checkMarked() 
{ 
    foreach (RepeaterItem ri in rpt1.Items) 
    { 
     if (((HtmlAnchor)ri.FindControl("aButton")).Attributes["class"] == "marked") 
     { 
      //do something... 
     } 
    } 
} 

답변

1

: 여기

내가 표시된 "인 aButton"의를 얻기 위해 할 것입니다.

표시된 백신을 사용하여 서버의 내용을 확인할 수 있도록 표시된 을 숨김으로 추가해야합니다.

또 다른 방법은 항목이 표시됨/변경되지 않은 상태에서 변경 될 때 서버에 직접 javascript 포스트 백을 보내는 것입니다.

+0

답장을 보내 주셔서 감사합니다. 수업을 받고 싶지만 내 문제는 HiddenField 솔루션을 사용하여 해결되었습니다. –

+0

@servergta 당신을 위해 기쁘다. – Nate

관련 문제