简体   繁体   English

无法在Datagrid ASP.NET中获取复选框值

[英]Can't get checkbox value in datagrid ASP.NET

I have a DataGrid which has Checkboxes which are used to select certain users. 我有一个DataGrid,其中包含用于选择某些用户的复选框。 When Ok button is clicked, I should get the state of checkbox, and if checked get ID of the row. 单击确定按钮时,我应该获得复选框的状态,如果选中,则应获得该行的ID。 I get to the checkbox, but value is always Checked = false, even when I check my checkbox, of course. 我进入了复选框,但是,即使我选中了复选框,其值也始终为Checked = false。 Code is below: 代码如下:

.aspx .aspx

        <Columns>

            <asp:TemplateColumn HeaderText="Odabir">
                <ItemTemplate>
                    <asp:CheckBox ID="chkVjezba" runat="server" Enabled="true"/>
                </ItemTemplate>
            </asp:TemplateColumn>

            <asp:BoundColumn HeaderText="Vježba" DataField="Naziv"></asp:BoundColumn>

            <asp:TemplateColumn HeaderText="Broj serija">
                <ItemTemplate>
                    <asp:TextBox ID="brojSerija" runat="server" Width="20px"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateColumn>

            <asp:TemplateColumn HeaderText="Ocjena 6">
                <ItemTemplate>
                    <asp:TextBox ID="ocjena6" runat="server" Width="20px"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateColumn>

            <asp:TemplateColumn HeaderText="Ocjena 7">
                <ItemTemplate>
                    <asp:TextBox ID="ocjena7" runat="server" Width="20px"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateColumn>

            <asp:TemplateColumn HeaderText="Ocjena 8">
                <ItemTemplate>
                    <asp:TextBox ID="ocjena8" runat="server" Width="20px"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateColumn>

            <asp:TemplateColumn HeaderText="Ocjena 9">
                <ItemTemplate>
                    <asp:TextBox ID="ocjena9" runat="server" Width="20px"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateColumn>

            <asp:TemplateColumn HeaderText="Ocjena 10">
                <ItemTemplate>
                    <asp:TextBox ID="ocjena10" runat="server" Width="20px"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateColumn>
        </Columns>

    </asp:DataGrid>

My .cs Code File: 我的.cs代码文件:

foreach (DataGridItem row in vjezbeGrid.Items)
            {
            if (((CheckBox)row.Cells[0].FindControl("chkVjezba")).Checked)
            {
               //something
            }

        }

Thanks. 谢谢。

Try like this 这样尝试

foreach (DataGridItem row in vjezbeGrid.Items)
        {
            if (row.ItemType == ListItemType.Item)
            {
                CheckBox chkVjezba = (CheckBox)row.FindControl("chkVjezba");

                if (chkVjezba.Checked)
                {
                    //something
                }
            }

        }

You might databind on every postback. 您可能会在每次回发中进行数据绑定。 Make sure that you databind only if !Page.IsPostBack. 确保仅当!Page.IsPostBack时才进行数据绑定。

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

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