2011-09-12 4 views
0

JQuery에서 숨겨진 필드를 추가하고 목록보기에서 선택한 항목의 값을 지정하려고합니다. 아무도 이것에 나를 도울 수 있습니까?JQuery를 사용하여 Listview의 SelectedItem에서 숨겨진 필드에 값을 할당하십시오.

<SelectedItemTemplate> 
      <tr class='results-row selected-product' id='<%# Eval("GenericProductID") %>'> 
      <td class="results-item"> 
       <asp:Label ID="lblMatchedName" runat="server" Text='<%#Eval("MatchedName") %>' CssClass="matched-name" /> 
       <input type=’hidden’ class="synonym-id" value ='<%#Eval("SynonymID") %>' /> 
       <input type='hidden' class="product-index" value='<%# CType(Container, ListViewDataItem).DisplayIndex %>' /> 
      </td> 
      <td> 
    <asp:LinkButton ID="btnSelect" runat='server' CommandName='Select' Text='Select' CommandArgument='<%# Eval("GenericProductID") %>' 
      CssClass='button-select' /></td> 
      </tr> 
    </SelectedItemTemplate> 

위의 블록에서이 필드는 내가 추가하려고하는 필드이며 jquery에서 읽습니다.

<input type=’hidden’ class="synonym-id" value ='<%#Eval("SynonymID") %>' /> 

JQuery와 -

$(document).ready(function() { 
       debugger; 
       $('#<%= loader.ClientID %>').hide(); 
       $('#left-search-content').hide(); 
       $('#right-search-content').hide(); 
       $('.header-bottom').hide(); 

       $('.results-row').live('mouseover', function() { $(this).addClass('highlighted'); }); 
       $('.results-row').live('mouseout', function() { $(this).removeClass('highlighted'); }); 
       $('.search-cancel').live('click', function() { 
        $('#dialog-form').dialog('close'); 
       }); 
       $('#<%= lbSearch.ClientID %>').live('click', function() { 
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndSearchHandler); 
       }); 
       $('.results-item').live('click', function() { 
        $('.selected-product').removeClass('selected-product'); 
        $(this).addClass('selected-product'); 
        //$(this).parent().addClass('selected-product'); 

        //var btnId = $(this).parent().find('.button-select').attr('id').replace(/_/gi, '$'); 
        //__doPostBack(btnId, ""); 
        $selectedProductRow = $(this).parent(); 
        var productId = $(this).parent().attr('id'); 
        debugger; 
        var matchedName = $selectedProductRow.find('.matched-name').html(); 
        var selectedSynonymID = $selectedProductRow.find('.synonym-id').html(); 

        var $hiddenField = $('#<%= hdnSelectedProductID.ClientID %>'); 
        $('#<%= hdnSelectedProductName.ClientID %>').val(matchedName); 
        $('#<%= hdnSelectedSynonymID.ClientID %>').val(selectedSynonymID); 
        if ($hiddenField) { 
         $hiddenField.val(productId); 
         __doPostBack($hiddenField.attr('id'), ''); 
        } 
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndDetailsHandler); 
        return false; 
       }); 

       //     $('.search-box').live('keypress', function(e) { 
       //      if(e.keyCode == 13) { 
       //        var btnId = $(this).parent().find('.search-button').attr('id').replace(/_/gi, '$'); 
       //        __doPostBack(btnId, ""); 
       //      } 
       //     }); 

       function OnFailed(error) { 
        alert(error.get_message()); 
       } 

      }); 

hdnSelectedSynonymID 내가 선택한 목록보기 항목의 synonymid 데이터 필드를 가지고 싶어 숨겨진 변수입니다.

답변

0

이 유형의 일반적인 해결책은 숨겨진 필드의 값을 설정하는 listview 위젯에 change() 이벤트를 첨부하는 것입니다. 당신이 게시 한 코드를 따라 조금 어렵

$('#list-view').change(function() { 
    $('input[name=hdnSelectedSynonymID]').val($(this).attr("synonymid")); 
}); 

하지만, 위의 예는 당신에게 아이디어를 줄 것이다 : 목록보기를 가정

는 실제로 같은 드롭 다운 목록입니다. 숨겨진 필드는 양식 POST의 일부로 서버로 다시 전달 될 경우 이름이 필요합니다.

<input type="hidden" name="hdnSelectedSynonymID" value ="<%#Eval('SynonymID')%>"/> 
관련 문제