rukfash
rukfash

Reputation: 3

Can't get checkbox value in datagrid ASP.NET

I have a DataGrid which has Checkboxes which are used to select certain users. When Ok button is clicked, I should get the state of checkbox, and if checked get ID of the row. I get to the checkbox, but value is always Checked = false, even when I check my checkbox, of course. Code is below:

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

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

        }

Thanks.

Upvotes: 0

Views: 1864

Answers (2)

Ibrahim ULUDAG
Ibrahim ULUDAG

Reputation: 480

You might databind on every postback. Make sure that you databind only if !Page.IsPostBack.

Upvotes: 1

Dgan
Dgan

Reputation: 10285

Try like this

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

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

        }

Upvotes: 1

Related Questions