2011-09-12 28 views
0

我想添加一个隐藏字段和值分配给它(从列表视图中选择的项目)在JQuery中。任何人都可以帮助我吗?值分配给从列表视图中的SelectedItem隐藏字段使用JQuery

<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是隐藏变量我想有选择的ListView项的synonymid数据字段。

回答

0

这种类型的要求,一般的解决方案是将change()事件附加到ListView控件,在其中设置隐藏字段的值。

假设列表视图确实是一个下拉列表,然后是这样的:

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

你已经发布的代码是有点难以理解,但上面的例子应该给你的想法。你的隐藏字段需要,如果它要被传递回服务器作为表单POST的一部分,一个名字:

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