如何访问gridview的选中/选中行元素的元素

本文关键字:元素 gridview 何访问 访问 | 更新日期: 2023-09-27 18:18:29

我在windows 8.2中工作,正在努力插入选定的行到我的数据库,我有web表单,其中有一个gridview与复选框选择/取消选择和一个事件插入。web表单的代码如下

<asp:Panel runat="server" ID="pnlStudData">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"  BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3">
        <Columns>
            <asp:TemplateField>
                <HeaderTemplate>
                    <asp:checkbox runat="server" ID="chKCheckAll" onclick="javascript:SelectAllCheckboxes(this)"/>
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:CheckBox runat="server" ID="chkCheck" onclick="javascript:CheckedCheckboxes(this)"/>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Student Id">
                <ItemTemplate>
                    <asp:Label ID="lblStudName" runat="server" Text='<%#Eval("Stud_Id")%>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
             <asp:TemplateField HeaderText="First Name">
                <ItemTemplate>
                    <asp:Label ID="lblFirstName" runat="server" Text='<%#Eval("FirstName")%>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
             <asp:TemplateField HeaderText="Middle Name">
                <ItemTemplate>
                    <asp:Label ID="lblMiddleName" runat="server" Text='<%#Eval("MiddleName")%>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
             <asp:TemplateField HeaderText="Last Name">
                <ItemTemplate>
                    <asp:Label ID="lblLastName" runat="server" Text='<%#Eval("LastName")%>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
             <asp:TemplateField HeaderText="Cumpase">
                <ItemTemplate>
                    <asp:Label ID="lblCumpase" runat="server" Text='<%#Eval("Cumpase")%>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
             <asp:TemplateField HeaderText="College">
                <ItemTemplate>
                    <asp:Label ID="lblCollege" runat="server" Text='<%#Eval("College")%>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
             <asp:TemplateField HeaderText="Department">
                <ItemTemplate>
                    <asp:Label ID="lblDept" runat="server" Text='<%#Eval("Dept")%>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
             <asp:TemplateField HeaderText="Block">
                <ItemTemplate>
                    <asp:Label ID="lblBlock" runat="server" Text='<%#Eval("Block")%>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
             <asp:TemplateField HeaderText="Dorm Number">
                <ItemTemplate>
                    <asp:Label ID="lblDormNo" runat="server" Text='<%#Eval("Dorm")%>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
        <FooterStyle BackColor="White" ForeColor="#000066" />
        <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
        <RowStyle ForeColor="#000066" />
        <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
        <SortedAscendingCellStyle BackColor="#F1F1F1" />
        <SortedAscendingHeaderStyle BackColor="#007DBB" />
        <SortedDescendingCellStyle BackColor="#CAC9C9" />
        <SortedDescendingHeaderStyle BackColor="#00547E" />
    </asp:GridView>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <asp:Button ID="Save" runat="server" Text="Save" Width="169px" Height="46px" OnClick="Save_Click" />
        <br />
        <br />
        <br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    <br />
</asp:Panel>

和Java脚本来选择/取消选择

复选框
<script language="javascript" type="text/javascript">
        function SelectAllCheckboxes(chk)
        {
            var totalRows = $("#<%=GridView1.ClientID%> tr").length;
            var selected = 0;
            $('#<%=GridView1.ClientID%>').find("input:checkbox").each(function () {
                if (this != chk) {
                    this.checked = chk.checked;
                    selected += 1;
                }
            });
        }
        function CheckedCheckboxes(chk)
        {
            if(chk.checked)
            {
                var totalRows = $('#<%=GridView1.ClientID %> :checkboxes').length;
                var checked = $('#<%=GridView1.ClientID %> :checkbox:checked').length;
                if(checked==(totalRows-1))
                {
                    $('#<%=GridView1.ClientID %>').find("input:checkbox").each(function () {
                        this.checked = true;
                    });
                }
                else
                {
                    $('#<%=GridView1.ClientID %>').find('input:checkbox:first').removeAttr('checked');
                }
            }
            else {
                $('#<%=GridView1.ClientID %>').find('input:checkbox:first').removeAttr('checked');
            }
        }
</script>

和按钮保存单击事件,该事件将此选定的行单元格发送给数据库类插入方法

foreach(GridViewRow gd in GridView1.Rows)
       {
           if ((gd.Cells[0].FindControl("chkCheck") as CheckBox).Checked)
           {
              // gd.Cells[0].Visible = false;
               string stId = gd.Cells[1].Text.ToString();
               string fName = gd.Cells[2].Text.ToString();
               string mName = gd.Cells[3].Text.ToString();
               string lName = gd.Cells[4].Text.ToString();
               string cumpas = gd.Cells[5].Text.ToString();
               string college = gd.Cells[6].Text.ToString();
               string dept = gd.Cells[7].Text.ToString();
               int bl = Convert.ToInt32(gd.Cells[8].Text);
               int dormNo = Convert.ToInt32(gd.Cells[9].Text);
               DbCon db = new DbCon();
               if (db.RegisterStud(stId, fName, mName, lName, cumpas, college, dept, bl, dormNo) == 1)
               {
                   Label1.Text = "You Have Inserted";
               }
                   else
                   {
                       Label1.Text = "Errror";
                   }
           }
           else { Label1.Text = "Please select a row"; }
       }

但是我找不到每个单元格的值,而不是分配给那些字符串变量。

如何访问gridview的选中/选中行元素的元素

当使用<asp:TemplateField>时,数据不在Cell内,而是包含在Cell内的控件中。

row.Cells[].Text只适用于使用<asp:BoundField>的GridView列。

因此,当使用<asp:TemplateField>时,有两个步骤来读取值:
  1. 访问单元格内的控件
  2. 从步骤1中的控件访问值

我看到您已经执行了上面的步骤来读取第一列的Checkbox值。对所有其他列执行相同的操作。

if ((gd.Cells[0].FindControl("chkCheck") as CheckBox).Checked)
 {
        // Step 1: Access the Control inside Cell
            Label lblName = (Label)gd.Cells[1].FindControl("lblStudName");
         // Step 2: Access the Value from Control in step 1
            string Name = lblName.Text;
    // Combine Step 1 & Step 2: Access Values in one line
    string Name = ((Label)gd.Cells[1].FindControl("lblStudName")).Text;
    string firstName = ((Label)gd.Cells[2].FindControl("lblFirstName")).Text;
    // ....same way for all Columns which use a <asp:TemplateField>
}