2011-01-11 4 views
0

나는 gridview 내부에 두 개의 드롭 다운 목록, 즉 ddonsiteoffsite 및 ddhours가 있습니다. 이제 ddonsiteoffsite의 selectedtext가 "온 사이트"인 경우 ddhours를 비활성화해야합니다. 다음 코드 스 니펫을 시도했지만 ddhours를 비활성화하지 않았습니다.gridview 내부의 다른 드롭 다운 목록에서 선택한 값을 기반으로 gridview 내에서 드롭 다운 목록 사용 안 함

<asp:TemplateColumn HeaderText="  OnSite/OffSite" > 
       <ItemTemplate> 
        <asp:DropDownList ID="ddOnsiteOffside" runat="server" onchange="ToggleOnOff(this)"><asp:ListItem Text = "Offsite" Value="Offsite"></asp:ListItem>   
         <asp:ListItem Text = "Onsite" Value="Onsite"></asp:ListItem> 
         </asp:DropDownList> 
       </ItemTemplate> 
      </asp:TemplateColumn> 
      <asp:TemplateColumn> 
       <ItemTemplate> 
        <asp:DropDownList ID="ddhours" runat="server"> 
         <asp:ListItem Text = "1" Value="1" ></asp:ListItem> 
         <asp:ListItem Text = "2" Value="2" ></asp:ListItem> 
         <asp:ListItem Text = "3" Value="3" ></asp:ListItem> 
         <asp:ListItem Text = "4" Value="4" ></asp:ListItem> 
         <asp:ListItem Text = "5" Value="5" ></asp:ListItem> 
         <asp:ListItem Text = "6" Value="6" ></asp:ListItem> 
         <asp:ListItem Text = "7" Value="7" ></asp:ListItem> 
         <asp:ListItem Text = "8" Value="8" ></asp:ListItem> 
         <asp:ListItem Text = "9" Value="9" ></asp:ListItem> 
        </asp:DropDownList> 
       </ItemTemplate> 
      </asp:TemplateColumn> 

와 내가 사용하고 해당 자바 스크립트는 다음과 같습니다

function ToggleOnOff(ddonoff)  
    {  

    var row = chk.parentNode.parentNode;    
    if(ddonoff.value=="Onsite")  
    {   
      row.getElementsByTagName("ddhours")[0].disabled = true;     
    } 
    else 
      row.getElementsByTagName("ddhours")[0].disabled = false;      
} 

가 어떻게이 사용하는 자바 스크립트 또는 jQuery를 달성 할 수 있습니까? 내가 잘못 된 곳을 이해하지 못한다.

+0

나는 그것의 ASP로 데이터 그리드에있는 gridview를 다시 태그 한 : – naveen

+0

가 표시하시기 바랍니다 ..... 당 행 i hav 동일한 ddhour 및 ddOnsiteOffsite 지금은 각 행에 대해 추가 된 속성을 원합니다 ..... – naveen

답변

1

그냥 해보세요. 두 열이 서로 옆에없는 경우에도

function ToggleOnOff(ddonoff) { 
    $(ddonoff) 
     .parent()// parent of ddl is td 
     .next()// gives the next td 
     .find('select')// finds a select element in that td 
     .attr('disabled', (ddonoff.value == "Onsite") ? 'disabled' : '');//enable-disable 
} 

또는

function ToggleOnOff(ddonoff) { 
    $(ddonoff) 
     .parent()//td 
     .parent()//tr 
     .find('select[id*="ddhours"]')//select by id 
     .attr('disabled', (ddonoff.value == "Onsite") ? 'disabled' : '');//disable-enable 
} 

방법 2 개 작품.

종속성 : jQuery

+0

이봐 ... 그게 ... 그걸 뒤에서 메커니즘을 설명 할 수 있습니까 ??? 어떻게 실제로 일 했습니까 ??? @ naveen? – Joy

+0

@joy : 설명으로 설명을주었습니다. – naveen

+0

안녕하세요 :) 감사합니다. :) 정말 도움이되었습니다. :) 이제는 어떤 gridviewtemplates도 처리 할 수 ​​있습니다. – Joy

0

동일한 ID를 가진 요소가 두 개 이상일 경우 유효하지 않은 HTML 문서가됩니다. ID를 제거하고 이름을 지정하십시오. 당신이 row.getElementsByTagName("ddhours")를 사용하는 코드에서이

$("select[name='ddOnsiteOffsideName']").change(function(){ 
    var parent = $(this).closest("tr"); 
    var hoursSelectBox = parent.find("select[name='hoursName']"); 
    if (hoursSelectBox.val() === "Onsite") { 
     hoursSelectBox.attr("disabled", true); 
    } 
}); 

같은

뭔가. 이 경우에는 틀린`ddhours '태그 이름을 가진 모든 요소를 ​​가져올 것입니다.

+0

없는 것은이가있는 gridview의 행 당 ㄴ 것입니다 당신을 도움이 게시물을 답변으로에 TemplateColumn – Joy

관련 문제