jQuery的;在模板控件中选择网格中的项目?

时间:2012-08-29 07:23:34

标签: jquery asp.net gridview jquery-selectors

我有这个网格..

<tr>
  <td class="TDCaption" style="text-align: 
     <div class="DivStyleWithScroll" style="width: 100%; overflow: scroll; height: 250px;">
       <asp:GridView ID="grdReport" runat="server" AutoGenerateColumns="False" DataKeyNames="BookingNumber"
ShowFooter="True" EmptyDataText="No record found" PageSize="50" CssClass="mGRid">
        <Columns>
          <asp:TemplateField>
            <HeaderTemplate>
          <asp:CheckBox ID="chkAll" runat="server" />
            </HeaderTemplate>
            <ItemTemplate>
          <asp:CheckBox ID="chkSelect" runat="server" />
            </ItemTemplate>
          </asp:TemplateField>
          <asp:BoundField DataField="BookingDate" DataFormatString="{0:d}" HeaderText="Booking Date"
           SortExpression="BookingDate" FooterText="Total" />
          <asp:TemplateField HeaderText="Booking No.">
           <ItemTemplate>
            <asp:HyperLink ID="hypBtnShowDetails" runat="server" Text='<%# Bind("BookingNumber") %>' CssClass="grdCustName"
            Target="_blank" NavigateUrl='<%# String.Format("~/Bookings/BookingSlip.aspx?BN={0}{1}{2}",Eval("BookingNumber"),-1,Eval("DeliveryDate")) %>'
           </ItemTemplate>
          </asp:TemplateField>
          <asp:BoundField DataField="CustomerName" HeaderText="Customer Name" SortExpression="CustomerName">
    </asp:BoundField>
  </Columns>
</asp:GridView>

所以,正如你所看到的,第一个col是一个复选框,我想要的是当我点击复选框时,我希望预订编号(在第二个col中)腐蚀到该复选框,存储在一个变量中。 比如说,用户勾选第3个复选框,预订号码。在第3行是29.我希望它被选中。另外,我还要再说一点,所有这些网格视图都在子页面中,并且在内容中,就像这样......

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">

以防这可能会影响事情。我正在使用它..

   $(document).ready(function () {
       $("body").delegate(":checkbox", "change", function () {

           var list = $(':checkbox:checked').size();
           alert(list); // tells correctly how many I have checked
           var list2 = $.map(':checkbox:checked', function () {
               return $(this).closest('div').find('.grdCustName').text();
           }).toString();
           alert(list2); // nothing happens
           var list3 = $.map(':checkbox:checked', function () {
               return $(this).text();
           }).get(); // nothing here too
           alert(list3);
           var list4 = $.map(':checkbox:checked', function (index) {
               return $(this).closest('div').find('.grdCustName').eq(index).text();
           }).get(); // nothing here too
           alert(list4);
       });

   });

我甚至在没有通过索引的情况下尝试了所有这些,但仍然没有。我希望我清楚自己,如果有任何疑问只是评论,我会澄清!

所以,有人可以帮我这么做吗?

1 个答案:

答案 0 :(得分:0)

我建议你使用RowDatabound事件来获取Javascript中特定列的值。请看下面的代码。这可能会给你一些想法......

代码背后: -

void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
  {
    DataRowView drv = (DataRowView)e.Row.DataItem; 

    if(e.Row.RowType == DataControlRowType.DataRow)
    {
            CheckBox chkSelect=(CheckBox)e.Row.Cells[0].FindControl("chkSelect");
            chkSelect.Attributes.Add("onchange","setVariableValue('"+drv["BookingNumber"].ToString()+"')")
    }

  }

在Javascript中: -

function setVariableValue(bookNo)
{
   alert(bookNo);
}