使用javacsript

时间:2017-11-24 11:46:45

标签: javascript jquery html asp.net gridview

我在每行上都有以下网格复选框,我想在选中复选框时获取相应的选定行单元格值。 我可以在选中复选框但不确定如何获取所选行单元格值时发出警告。

这是我的gridview

  <asp:GridView ID="gvPRCertInfo" runat="server" AutoGenerateColumns="False" 
      GridLines="None"                      
      CellSpacing="1" CellPadding="1"
      Width="95%" BorderWidth="0"
      AllowSorting="True"
      PageSize="30"
      OnRowDataBound="gvPRCertInfo_RowDataBound"
      CssClass="data responsive">
      <Columns>
         <asp:TemplateField HeaderText="Select" SortExpression="">
            <HeaderTemplate>
               <asp:CheckBox ID="chkboxSelectAll" runat="server" AutoPostBack="true"  OnCheckedChanged="chkboxSelectAll_CheckedChanged"/>
            </HeaderTemplate>
            <ItemTemplate>
               <asp:CheckBox ID="chkCert" AutoPostBack="true" OnCheckedChanged="chkCert_CheckedChanged" OnClick="checkForVirtual(this);" runat="server" />
               <input type="hidden" id="hdnCertId" runat="server" value='<%# DataBinder.Eval(Container.DataItem, "CertId") %>' />
            </ItemTemplate>
         </asp:TemplateField>
         <asp:BoundField DataField="CertificateID" HeaderText="Certificate ID" HeaderStyle-HorizontalAlign="Center" />
         <asp:BoundField DataField="partID" HeaderText="Part Number" HeaderStyle-HorizontalAlign="Center" />
         <asp:BoundField DataField="PartDesc" HeaderText="Part Description" HeaderStyle-HorizontalAlign="Center" />
         <asp:BoundField DataField="platformType" HeaderText="platformType" Visible="false" />

 ...................................
 ...................................

      </Columns>
      <EmptyDataRowStyle CssClass="AlternatingRowStyle" />     
  </asp:GridView>

这是我的复选框javascript函数

  function checkForVirtual(checkBox){
    if(checkBox.checked)
    {
        alert('checked');

       /// here i need to get selected checked row all cells value 
    }
 }

任何人都可以就此提出任何想法,非常感谢我......

非常感谢提前..

3 个答案:

答案 0 :(得分:1)

你可以这样做。它将一个函数附加到复选框更改,找到最近的tr并循环所有td

<script type="text/javascript">
    $(document).ready(function () {
        $('#<%= gvPRCertInfo.ClientID %> input[type="checkbox"]').change(function () {
            $(this).closest('tr').children('td').each(function () {
                alert($(this).html());
            });
        });
    });
</script>

但是,您的复选框中有AutoPostBack="true",因此您在javascript中执行的所有操作都会因PostBack而立即丢失。

答案 1 :(得分:0)

试试这个。

function checkForVirtual(checkBox){
    if(checkBox.checked)
    {
        var row = checkBox.parent.parent;
        row.getElementById('<%= hdnCertId.ClientID %>');// this will get the hdnCertId
        row.cell[0].getElementById('<%= hdnCertId.ClientID %>');
        alert('checked');
}

}

This might help

答案 2 :(得分:0)

Array.prototype.filter
  

在cs文件中

 <HeaderTemplate>
 <asp:CheckBox ID="chkboxSelectAll"  AutoPostBack="true" OnCheckedChanged="chkboxSelectAll_CheckedChanged" runat="server" Text="All" />
 </HeaderTemplate>

 <ItemTemplate>
 <asp:CheckBox ID="chkCert" runat="server" Font-Size="XX-Small" />                                     
 </ItemTemplate>  

 </asp:TemplateField>
  

获取按钮点击的详细信息

protected void chkboxSelectAll_CheckedChanged(object sender, EventArgs e)
        {
            CheckBox chckheader = (CheckBox)gvPRCertInfo.HeaderRow.FindControl("chkboxSelectAll");
            foreach (GridViewRow row in gvPRCertInfo.Rows)
            {
                CheckBox CheckBoxchckrw = (CheckBox)row.FindControl("chkCert");
                if (chckheader.Checked == true)
                {
                    CheckBoxchckrw.Checked = true;
                }
                else
                {
                    CheckBoxchckrw.Checked = false;
                }
            }
        }