繁体   English   中英

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

[英]Trying to get checkbox checked rows values from gridview using Javascript

我有带有复选框的 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>

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

 <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://stackoverflow.com/a/47478969/8905879 的副本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM