2011-09-12 7 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

このタイプの一般的な解決策は、隠しフィールドの値を設定するリストビューウィジェットにchange()イベントを添付することです。

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

あなたが投稿したコードが従うことが少し難しいですが、上記の例では、あなたのアイデアを与える必要があります:リストビューを想定し

はその後のようなものが、実際にドロップダウンリストです。フォームPOSTの一部としてサーバーに戻す場合は、非表示フィールドに名前が必要です。

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