2012-05-01 5 views
0

SelectedIndexChanged 함수에 추가 매개 변수를 보낼 수있는 방법이 있습니까?SelectedIndexChanged에 추가 매개 변수를 보내는 방법은 무엇입니까?

<asp:RadioButtonList 
        ID="rblMeetingPlace" 
        SelectedValue = '<%# Bind("intMtgLoc") %>' 
      *OnSelectedIndexChanged = "Validate('txtMeetPlaceOther')"* 
        runat="server" 
        RepeatDirection="Horizontal" 
> 
<asp:ListItem Value="1">Workshop</asp:ListItem> 
<asp:ListItem Value="2">Service provider agency</asp:ListItem> 
<asp:ListItem Value="3">Advocacy organization</asp:ListItem> 
<asp:ListItem Value="4">Public Space</asp:ListItem> 
<asp:ListItem Value="5">Other (specify): </asp:ListItem> 
<asp:ListItem Value="" Text="" style="display: none" /> 
</asp:RadioButtonList> 
<asp:TextBox ID="txtMeetPlaceOther" Text='<%# Bind("strMtgLocOth") %>' 
runat="server" /> 

나는 radiobuttonlist 몇 개가 있는데 "기타"를 선택하면 텍스트 상자를 활성화하려고합니다. 나는 그것을 가능하게하기 위해 텍스트 박스의 id를 보낼 생각이다.

아이디어가 있으십니까?

답변

1

당신은 쉽게이 방법을 수행 할 수 있습니다

<asp:radiobuttonlist id="rbl1" runat="server" 
    RepeatDirection="Horizontal" 
    AutopostBack="true" 
    SelectedValue='<%# Bind("intMtgLoc") %>' 
    OnselectedIndexChanged="rbl1_SelectedIndexChanged"> 
     <asp:ListItem Value="1">Workshop</asp:ListItem> 
     <asp:ListItem Value="2">Service provider agency</asp:ListItem> 
     <asp:ListItem Value="3">Advocacy organization</asp:ListItem> 
     <asp:ListItem Value="4">Public Space</asp:ListItem> 
     <asp:ListItem Value="5">Other (specify): </asp:ListItem> 
     <asp:ListItem Value="" Text="" style="display:none" /> 
     </asp:radiobuttonlist> 
<asp:textbox id="txtMeetPlaceOther" text='<%# Bind("strMtgLocOth") %>' runat="server" /> 
<asp:textbox id="TextBox1" enabled="false" runat="server"></asp:textbox> 
<asp:textbox id="TextBox2" enabled="false" runat="server"></asp:textbox> 

및 코드 숨김에서을 : 의견을

protected void rbl1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     *yourValidatorName*.Validate(); 
     if (Convert.ToInt32(rbl1.SelectedValue) == 5) 
     { 
      TextBox1.Enabled = true; 
      TextBox2.Enabled = true; 
     } 
     else 
     { 
      TextBox1.Enabled = false; 
      TextBox2.Enabled = false; 
     } 
    } 

응답 : 모든 RadioButtonLists 이벤트 핸들러 OnSelectedIndexChanged을 설정해야합니다 모든 먼저. 여기 - rbl_SelectedIndexChanged. 은 그런 뒤에 코드 :

protected void rbl_SelectedIndexChanged(object sender, EventArgs e) 
     { 

      TextBox[] textboxes = new TextBox[] { TextBox1, TextBox2 };//all your textboxes. 

      RadioButtonList whoCallEvent = sender as RadioButtonList; 


      string last = whoCallEvent.ID.ToString().Substring(whoCallEvent.ID.ToString().Length - 1, 1);//get the last symbol of object (TextBox) ID, who call event. 
      int index = Convert.ToInt32(last); 
      if (Convert.ToInt32(whoCallEvent.SelectedValue) == 5) 
      { 
       textboxes[index - 1].Enabled = true; 
      } 
      else 
      { 
       textboxes[index - 1].Enabled = false; 
      } 
     } 

그러나 나는이 이런 식으로 할 개념적으로 잘못 생각합니다. 가장 좋은 방법은 내 페이지에있는 radioButtonList에 대해 rbl_SelectedIndexChanged을 만드는 것입니다.

+0

귀하의 방법을 사용하여 내 페이지에있는 모든 radioButtonList에 대해 rbl1_SelectedIndexChanged를 만들어야합니다. TextBox 활성화/비활성화를 처리 할 수있는 단일 함수를 만들고 싶습니다. – SZT