1

我有这个网格..

<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>

因此,如您所见,第一个列是一个复选框,想要的是当我单击复选框时,我希望与该复选框对应的预订号(在第二个列中)存储在一个变量中。比如说,用户勾选了第三个复选框,即预订号。第三行是 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);
       });

   });

我什至在没有传入索引的情况下尝试了所有这些,仍然一无所获。我希望我说清楚了,如果有任何疑问,请发表评论,我会澄清的!

那么,有人可以帮我做这件事吗?

4

1 回答 1

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);
}
于 2012-08-29T11:52:20.683 回答