mardi 13 septembre 2016

Update checkbox value in gridview using entity framework

I have following html:

    <asp:GridView ID="gvSeminari" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" ShowFooter="True" DataKeyNames="idSeminar" OnRowCancelingEdit="gvSeminari_RowCancelingEdit" OnRowEditing="gvSeminari_RowEditing" OnRowUpdating="gvSeminari_RowUpdating" AllowPaging="True" OnPageIndexChanging="gvSeminari_PageIndexChanging" >
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Button ID="btnEdit" runat="server" Text="Uredi" CommandName="Edit" />
                </ItemTemplate>
                <EditItemTemplate>
                   <asp:Button ID="btnUpdate1" runat="server" Text="Spremi" CommandName="Update" />
                   <asp:Button ID="btnCancel1" runat="server" Text="Poništi" CommandName="Cancel" />
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="ID Seminara">
                <FooterTemplate>
                    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Unesi seminar" />
                </FooterTemplate>


                <ItemTemplate>
                    <asp:Label ID="lblID" runat="server" Text='<%#Eval("idSeminar") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Naziv seminara">
                <FooterTemplate>
                    <asp:TextBox ID="txtNaziv" runat="server"></asp:TextBox>
                </FooterTemplate>

                <ItemTemplate>
                    <asp:Label ID="lblNaziv" runat="server" Text='<%#Eval("naziv") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtNaziv1" runat="server" Text='<%#Eval("naziv") %>'></asp:TextBox>
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Opis seminara">
                <FooterTemplate>
                    <asp:TextBox ID="txtOpis" runat="server"></asp:TextBox>
                </FooterTemplate>

                <ItemTemplate>
                    <asp:Label ID="lblOpis" runat="server" Text='<%#Eval("opis") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtOpis1" runat="server" Text='<%#Eval("opis") %>'></asp:TextBox>
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Datum seminara">
                <FooterTemplate>
                    <asp:TextBox ID="txtDatum" runat="server"></asp:TextBox>
                </FooterTemplate>

                <ItemTemplate>
                    <asp:Label ID="lblDatum" runat="server" Text='<%#Eval("datum") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtDatum1" runat="server" Text='<%#Eval("datum") %>'></asp:TextBox>
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="popunjen">
                <ItemTemplate>
                    <asp:CheckBox ID="chkStatus" runat="server" Checked='<%#Eval("status") %>' AutoPostBack="true" OnCheckedChanged="chkStatus_CheckedChanged"/>
                </ItemTemplate>

            </asp:TemplateField>
            <asp:TemplateField HeaderText="Broj predbilježbi">
                <ItemTemplate>
                    <asp:Label ID="lblBroj" runat="server" Text='<%#Eval("brojPredbiljezbi") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
        <EditRowStyle BackColor="#999999" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#E9E7E2" />
        <SortedAscendingHeaderStyle BackColor="#506C8C" />
        <SortedDescendingCellStyle BackColor="#FFFDF8" />
        <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
    </asp:GridView>

    <br />
    <asp:Button ID="Button3" runat="server" OnClick="Button3_Click" Text="Prijava seminara" />

     

    <br />
    <br />
    <asp:GridView ID="gvPopunjeni" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None">
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <EditRowStyle BackColor="#999999" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#E9E7E2" />
        <SortedAscendingHeaderStyle BackColor="#506C8C" />
        <SortedDescendingCellStyle BackColor="#FFFDF8" />
        <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
    </asp:GridView>

</div>
    <p>

    </p>
</form>

and here is code behind:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;

    public partial class Admin : System.Web.UI.Page
    {
    SqlConnection conn = new SqlConnection     (ConfigurationManager.ConnectionStrings["connString"].ToString());
    SqlCommand cmd;
    SqlDataAdapter da;
    string query;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {

            NapuniGridview();

        }
    }

    private void NapuniGridview()
    {
        try
        {
            conn.Open();


            query = "SELECT * FROM Seminari";

            //query = "SELECT C.idSeminar,C.naziv,C.datum, C.opis, C.status, r.[NumberOfRegitsration PerClass] from Seminari C left join ( select idSeminara, count(*) as [NumberOfRegitsration PerClass] from Predbiljezba group by idSeminara) R on c.idSeminar = r.idSeminara";

            cmd = new SqlCommand(query, conn);

            da = new SqlDataAdapter(cmd);

            DataSet ds = new DataSet();

            da.Fill(ds, "Seminari");

            gvSeminari.DataSource = ds;
            gvSeminari.DataBind();

            conn.Close();

        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);

        }

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        TextBox naziv = (TextBox)gvSeminari.FooterRow.FindControl("txtNaziv");
        TextBox opis = (TextBox)gvSeminari.FooterRow.FindControl("txtOpis");
        TextBox datum = (TextBox)gvSeminari.FooterRow.FindControl("txtDatum");
        //CheckBox chkUnesi = (CheckBox)gvSeminari.FooterRow.FindControl("chkUnesi");

        string connString = ConfigurationManager.ConnectionStrings["connString"].ToString();

        SqlConnection conn = new SqlConnection(connString);

        int status = 0;
        //query = "INSERT INTO Seminari(naziv,opis,datum, status) VALUES ('" + naziv.Text + "','" + opis.Text + "','" + datum.Text + "', '"+ chkUnesi.Checked + "')";
        query = "INSERT INTO Seminari(naziv,opis,datum, status) VALUES ('" + naziv.Text + "','" + opis.Text + "','" + datum.Text + "', '" + status + "')";
        SqlCommand cmd = new SqlCommand(query, conn);

        conn.Open();

        cmd.ExecuteNonQuery();

        conn.Close();

        NapuniGridview();



    }


    protected void chkStatus_CheckedChanged(object sender, EventArgs e)
    {
        using (conn)
        {
            query = "UPDATE Seminari SET status=@status WHERE idSeminar=@idSeminar";

            cmd = new SqlCommand(query, conn);

            conn.Open();



            foreach (GridViewRow row in gvSeminari.Rows)
            {
                int idSeminar = Convert.ToInt32(gvSeminari.DataKeys[row.RowIndex].Values[0]);


                bool isSelected = (row.FindControl("chkStatus") as CheckBox).Checked;

                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@idSeminar", idSeminar);
                cmd.Parameters.AddWithValue("@status", isSelected);
                cmd.ExecuteNonQuery();
            }





            conn.Close();




        }
    }

    protected void gvSeminari_RowEditing(object sender, GridViewEditEventArgs e)
    {
        gvSeminari.EditIndex = e.NewEditIndex;
        NapuniGridview();
    }

    protected void gvSeminari_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        gvSeminari.EditIndex = -1;
        NapuniGridview();
    }

    protected void gvSeminari_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        Label id = (Label)gvSeminari.Rows[e.RowIndex].FindControl("lblID");
        TextBox naziv = (TextBox)gvSeminari.Rows[e.RowIndex].FindControl("txtNaziv1");
        TextBox opis = (TextBox)gvSeminari.Rows[e.RowIndex].FindControl("txtOpis1");
        TextBox datum = (TextBox)gvSeminari.Rows[e.RowIndex].FindControl("txtDatum1");

        conn.Open();
        SqlCommand cmd = new SqlCommand("UPDATE Seminari SET naziv = '" + naziv.Text + "', datum='" + datum.Text + "', opis = '" + opis.Text + "' where idSeminar=" + Convert.ToInt32(id.Text), conn);
        cmd.ExecuteNonQuery();

        conn.Close();

        gvSeminari.EditIndex = -1;

        NapuniGridview();
    }

    protected void btnSearch_Click(object sender, EventArgs e)
    {
        query = "SELECT * FROM Seminari WHERE (naziv like '%' + @search + '%' OR opis like '%' + @search + '%' OR datum like '%' + @search + '%' )";
        cmd = new SqlCommand(query, conn);

        cmd.Parameters.AddWithValue("@search", SqlDbType.VarChar).Value = txtPretrazi.Text;


        conn.Open();

        da = new SqlDataAdapter();

        da.SelectCommand = cmd;

        DataSet ds = new DataSet();

        da.Fill(ds, "naziv");

        gvSeminari.DataSource = ds;
        gvSeminari.DataBind();

        conn.Close();
    }

    protected void btnPrikazi_Click(object sender, EventArgs e)
    {
        /*
        DataTable dt = new DataTable();
        dt.Columns.Add("idSeminar");
        dt.Columns.Add("Naziv");
        dt.Columns.Add("Opis");
        dt.Columns.Add("Datum");


        foreach (GridViewRow row in gvSeminari.Rows)
        {
            //CheckBox chk = (CheckBox)gvSeminari.FindControl("chkStatus");


            if ((row.Cells[0].FindControl("chkStatus") as CheckBox).Checked)
            {
                DataRow redak = dt.NewRow();
                redak["idSeminar"] = row.Cells[0].Text;
                redak["Naziv"] = row.Cells[1].Text;
                redak["Opis"] = row.Cells[2].Text;
                redak["Datum"] = row.Cells[3].Text;

                dt.Rows.Add(redak);

            }
        }
        */
        DataTable dt = new DataTable();

        dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Naziv seminara"), new DataColumn("Opis seminara"), new DataColumn("Datum seminara") });

        foreach (GridViewRow row in gvSeminari.Rows)

        {

            if (row.RowType == DataControlRowType.DataRow)

            {

                CheckBox chkRow = (row.Cells[0].FindControl("chkStatus") as CheckBox);

                if (chkRow.Checked)

                {

                    string naziv = (row.Cells[1].FindControl("lblNaziv") as Label).Text;

                    string opis = (row.Cells[2].FindControl("lblOpis") as Label).Text;

                    string datum = (row.Cells[2].FindControl("lblDatum") as Label).Text;

                    dt.Rows.Add(naziv, opis, datum);

                }

            }

        }

        gvPopunjeni.Visible = true;
        gvPopunjeni.DataSource = dt;
        gvPopunjeni.DataBind();
    }

    protected void Button2_Click(object sender, EventArgs e)
    {

        gvPopunjeni.Visible = false;
        NapuniGridview();
    }



    protected void gvSeminari_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gvSeminari.PageIndex = e.NewPageIndex;
        NapuniGridview();
        gvSeminari.DataBind();
    }

    protected void Button3_Click(object sender, EventArgs e)
    {
        Response.Redirect("PrijavaTreca.aspx");
    }

    protected void Button4_Click(object sender, EventArgs e)
    {
        Response.Redirect("Predibiljezba.aspx");
    }
}

Can you please help me with this. I would like to do this using Entity framework, but i got stuck with checkbox in gridview. I fill this values from database (true or false), and you can change it in gridview. How can i do it using entity framework.

Any help would be appreciated.




Aucun commentaire:

Enregistrer un commentaire