2014-11-22 64 views
2

我有一個GridView,看起來像這樣在GridView的檢查行的值:查找使用jQuery

<div id="btnCancel" onclick="cancelize()" class="btn btn-default pull-right ui-colour"><span class="glyphicon glyphicon-remove"></span></div> 
    <asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" 
     OnPageIndexChanging="gv_PageIndexChanging" Width="90%" PageSize="10" HorizontalAlign="Center" AllowPaging="true" OnRowDataBound="gv_RowDataBound" 
     CssClass="table table-bordered ui-state-default table-condensed table-responsive table-hover"> 
      <Columns> 
       <asp:BoundField DataField="id" HeaderText="Nbr." ItemStyle-HorizontalAlign="center" ItemStyle-VerticalAlign="Top" ItemStyle-Wrap="false" /> 
       <asp:TemplateField ItemStyle-Wrap="false" ItemStyle-VerticalAlign="Top" HeaderText="Options" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"> 
        <ItemTemplate> 
        <div id="btnEdit" onclick="modalize(<%#Eval("id") %>)" class="btn btn-sm btn-default ui-colour"><span class="glyphicon glyphicon-wrench"></span></div> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:BoundField Visible="true" DataField="status" HeaderText="Status" ItemStyle-HorizontalAlign="center" HeaderStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Top" ItemStyle-Wrap="false" /> 
       <asp:BoundField Visible="true" DataField="amount" HeaderText="Amount" ItemStyle-HorizontalAlign="center" HeaderStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Top" ItemStyle-Wrap="false" /> 
       <asp:BoundField Visible="true" DataField="added" HeaderText="Added" ItemStyle-HorizontalAlign="center" HeaderStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Top" ItemStyle-Wrap="false" DataFormatString="{0:d}" /> 
       <asp:BoundField Visible="true" DataField="nextbilling" HeaderText="Next Billing" ItemStyle-HorizontalAlign="center" HeaderStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Top" ItemStyle-Wrap="false" DataFormatString="{0:d}" /> 
       <asp:BoundField Visible="true" DataField="lastresult" HeaderText="Last Result" ItemStyle-HorizontalAlign="center" HeaderStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Top" ItemStyle-Wrap="false" /> 
       <asp:TemplateField ItemStyle-Wrap="false" ItemStyle-VerticalAlign="Top" HeaderText="Cancel" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"> 
        <ItemTemplate> 
        <asp:Label runat="server" Visible="false" ID="hfId" Text='<%#Eval("id") %>'></asp:Label> 
        <asp:Label runat="server" Visible="false" Text='<%# " - " + Eval("cancel", "{0:d}") %>' ID="lblCancel"></asp:Label> 
        <asp:CheckBox ID="cbCancel" CssClass="cbCancel" runat="server" Visible="false" /> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
    </asp:GridView> 
<a id="hlCancel" class="hlCancel" /> 
<a id="hlEdit" class="hlEdit" /> 

函數調用模式:

   function cancelize() { 
     var pId = queryString.pid; 
     var ids = ""; 
     $("input[name$=cbCancel]:checked").each(function() { 
      ids += "-" + $(this).next('input:hidden[id$=hfId]').val();//stuck here 
     }).get(); 
     var url = "pageToView.aspx?id=1&pid=" + pId+ "&cids=" + ids; 
     $j('#hlCancel').attr('href', url) 
     $j('#hlCancel').click(); 
    } 

一切都很正常,但在。每個( )在cancelize函數中它將返回未定義的選定行。這裏需要改變什麼,以便它可以通過選中複選框從行中獲取hfId值?

+0

[jQuery從複選框選擇的Asp.net Gridview中獲取選定的行值](http://www.aspdotnet-suresh.com/2012/10/jquery-get-selected-row-values-from.html)或[在CheckBox和ASP.NET GridView中使用jQuery](http://www.dotnetcurry.com/showarticle.aspx?ID=662)我認爲兩者都可以爲你工作。 – 2014-11-22 04:08:38

+0

@ManishGoswami不幸的是,這似乎並不適合我。我只能在next()中看到名稱代替id,與上面的不同。試過它無濟於事 – user4075691 2014-11-22 04:14:19

回答

1

您需要選擇td內這兩個隱藏的控制和複選框駐留父,然後搜索隱藏字段: -

var Parenttd = $('input[type="checkbox"]:checked').parents('td')[0]; 
    var HiddenValue = $(input:hidden,Parenttd).val(); 

而且,由於你在你的標籤控制使用「可見=假」它不會呈現,而不是你建議立即進行刪除使用隱藏的控制: -

<asp:HiddenField ID="hfId" runat="server" Value='<%# Eval("id") %>' /> 

編輯:
如果你想使用這個ID選擇則y取OU需要設置複選框,並隱藏字段控制ClientIDMode="Static"財產,那麼你可以簡單地使用這樣的: -

var parenttd =$('#cbCancel:checked').parents('td')[0]; 
var yourHiddenVal $('#hfId',parent).val(); 

我已經使用這個隱藏的控制,並檢查上面的jQuery代碼是工作的罰款。

+0

修改它,所以它將拉動獨特的行,像這樣工作:var var ParentSize = $(this) 。家長( 'TD')[0]; var HiddenValue = $('input [name $ = hfId]',Parenttd).val();' – user4075691 2014-11-22 04:53:37

+0

@ user4075691 - Okay Cheers :) – 2014-11-22 04:56:59

1

看起來你缺少來自該字段的值。當一個HTML複選框被渲染,它看起來就像這樣:

<input type="checkbox" value="1" id="checkbox"> 

$('#checkbox').val()將返回1,無論它是否已選中。如果沒有值,它將返回undefined - 不管它是否被檢查。

+0

林不知道你的意思,我試圖得到隱藏標籤hfId的價值,而不是複選框本身的價值 – user4075691 2014-11-22 04:12:06

0

使用prev()來獲得您的隱藏標籤值。

$("input[name$=cbCancel]:checked").each(function() { 
ids += "-" + $(this).parent().find('[id$=hfId]').val(); 
}); 

還可以使用樣式=「visibility:hidden的」或樣式=「顯示:無」,而不是使用可見=「假」爲標籤的標籤,因爲可見=「假」將停止從被渲染到控制HTML。

+0

我看到你的角度,但不幸的是它沒有工作。我相信這是因爲問題現在是[id $ = hfId]。我將嘗試編輯 – user4075691 2014-11-22 04:25:02

+0

它沒有工作設置CSS,我也刪除它,所以它是可見的,它仍然沒有工作 – user4075691 2014-11-22 04:31:43