尝试使用Javascript从gridview获取复选框选中的行值

Posted

技术标签:

【中文标题】尝试使用Javascript从gridview获取复选框选中的行值【英文标题】:Trying to get checkbox checked rows values from gridview using Javascript 【发布时间】:2018-05-08 12:46:58 【问题描述】:

我将 gridview 与复选框作为第一列,我正在尝试使用附加到下面提到的复选框的 javascript 函数来获取所选复选框的完整行值。

我尝试了不同的方法,但卡在了中间,这就是我再次在这里发帖的原因。

但是有些我没有进入 for 循环,我不确定这段代码在哪里出错。

Javascript 函数:

function checkForVirtual()
    var GridView = document.getElementById('<%=gvPRCertInfo.ClientID %>');

    if (GridView.rows.length > 0) 
        alert('check');
        for (Row = 1; Row < GridView.rows.length; Row++)                   
             alert("check 2 times"); 
              
            if (GridView.rows[Row].cell[1].type == "checkbox") 
              /// not getting into this 
             ///  alert is not firing even if the checkbox is there 
                alert('inside'); 
                if (GridView.rows[Row].cell[0].childNodes[0].checked) 
                    alert('checked');
                    var type = GridView.rows[Row].cell[3].childNodes[0].val();
                    alert(type);
                
            
        
    

这是我的网格视图:

<asp:GridView ID="gvPRCertInfo" runat="server" AutoGenerateColumns="False" GridLines="None"
                        
     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="Javascript:checkForVirtual();" 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" />
                  ..............................

    </Columns>
  .........................
 .......................
 </asp:GridView>

有人可以帮忙解决这个问题吗?

【问题讨论】:

get the corresponding row values for check box checked row in grid view using javacsript的可能重复 @VDWWD 不要将其标记为重复我尝试了不同的方法但它不起作用这就是我在这里发布的原因.. 谁能帮忙解决这个问题... 【参考方案1】:

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

在cs文件中

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;
                
            
        

获取有关按钮单击的详细信息

protected void button_Click(object sender, EventArgs e)
        
            try
            
                int cnt = 0;

                DataTable dt = new DataTable();
                dt.Columns.Add("Certificate ID");
                dt.Columns.Add("Part Number");
                dt.Columns.Add("Part Description");


                foreach (GridViewRow row in gvPRCertInfo.Rows)
                
                    if ((row.Cells[0].FindControl("chkCert") as CheckBox).Checked)
                    
                        DataRow dr = dt.NewRow();
                        dr["Certificate ID"] = row.Cells[1].Text;
                        dr["Part Number"] = row.Cells[2].Text;
                        dr["Part Description"] = row.Cells[3].Text;

                        dt.Rows.Add(dr);
                        cnt++;
                    
                
                if (cnt <= 0)
                
                    DataRow dr = dt.NewRow();
                    dr["Certificate ID"] = gvPRCertInfo.SelectedRow.Cells[1].Text;
                    dr["Part Number"] = gvPRCertInfo.SelectedRow.Cells[2].Text;
                    dr["Part Description"] = gvPRCertInfo.SelectedRow.Cells[3].Text;

                    dt.Rows.Add(dr);

                

                 Session["Details"] = dt;
                Response.Redirect("url");
            
            catch (Exception ex)
            

            
        

你的问题可能是https://***.com/a/47478969/8905879的副本

【讨论】:

以上是关于尝试使用Javascript从gridview获取复选框选中的行值的主要内容,如果未能解决你的问题,请参考以下文章

从GridView项中获取值

从 RowDataBound 事件的 gridview 从单元格中获取值

使用javascript在gridview中获取复选框选中行的相应行值

如何在颤动中直接将数据从 StreamBuilder 获取到 GridView 中?

利用JavaScript选择GridView行

如何从 css 获取图像信息到 MasterPage'gridview 中?