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>

ご覧のとおり、最初の列はチェックボックスです。必要なのは、チェックボックスをクリックしたときに、そのチェックボックスに対応する予約番号(2番目の列)を変数に格納することです。たとえば、ユーザーが3番目のチェックボックスである予約番号にチェックマークを付けます。3行目は29です。選択してほしいです。また、もう1つ指摘しておきますが、このグリッドビューはすべて子ページにあり、次のようなコンテンツに含まれています。

<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 に答える