Linq with Datatable


public partial class Default3 : System.Web.UI.Page
{
    myclass conn = new myclass();
    DataTable dt = new DataTable();
    DataClassesDataContext dc = new DataClassesDataContext();
    static string str = @"Data Source=SQLDB;Persist Security Info=True;User ID=Demod;Password=Demo1@";
    public static SqlConnection con = new SqlConnection(str);
   
    protected void Page_Load(object sender, EventArgs e)
    {
       


        btn_submit.Enabled = false;
        if (!IsPostBack)
        {
            conn.BindState(ddl_state);
            Session["dt"] = null;
        }
        if (Session["dt"] == null)
        {
            dt = new DataTable();
            dt.Columns.Add(new DataColumn("com_name"));
            dt.Columns.Add(new DataColumn("com_state"));
            dt.Columns.Add(new DataColumn("com_city"));
            dt.Columns.Add(new DataColumn("com_email"));
            dt.Columns.Add(new DataColumn("con_name"));
            dt.Columns.Add(new DataColumn("con_gen"));
            dt.Columns.Add(new DataColumn("con_email"));
            dt.Columns.Add(new DataColumn("con_photo"));
            dt.Columns.Add(new DataColumn("con_cell"));
            Session["dt"] = dt;

            if (Request.QueryString["id"] != null)
            {
                DataSet ds = new DataSet();
                btn_submit.Text = "update";
                Session["dt"] = null;
                Session["dt"] = dt;
                int s = Convert.ToInt32(Request.QueryString["id"].ToString());
         

                var r = from h in dc.hardik_com_p2regis
                        where h.com_id==s
                        select new
                        {
                            h.com_id,h.com_name,h.com_state,h.com_city,h.com_email,
                            h.con_name,h.con_gen,h.con_email,h.con_photo,h.con_cell
                        };

                DataRow row = null;
                foreach(var h in r)
                {
                    row = dt.NewRow();
                    int p=Convert.ToInt32(h.com_state);
                    int w = Convert.ToInt32(h.com_city);
                    var sname = from j in dc.hardik_com_states
                                where j.s_id == p
                                select j.s_name;
                    var cname = from m in dc.hardik_com_cities
                                where m.c_id == w
                                select m.c_name;
                    dt.Rows.Add(h.com_name,sname.FirstOrDefault(),cname.FirstOrDefault(), h.com_email,h.con_name, h.con_gen, h.con_email, h.con_photo, h.con_cell);
                 
                }
                gv_comdetail.DataSource = dt;
                gv_comdetail.DataBind();
            }
        }
        else
        {
            dt = (DataTable)Session["dt"];
        }
        if (dt.Rows.Count > 0)
        {
            btn_add.Enabled = true;
        }
          
    }
    protected void ddl_state_SelectedIndexChanged(object sender, EventArgs e)
    {
        conn.BindCity(ddl_state.SelectedValue, ddl_city);
        gv_comdetail.DataSource = dt;
        gv_comdetail.DataBind();
    }
    protected void btn_add_Click(object sender, EventArgs e)
    {
        string ig = ful_photo.FileName.ToString();
        string url = "photo/" + ig;
        ful_photo.SaveAs(Server.MapPath("~//") + url);
        if (btn_add.Text == "add")
            {
                dt.Rows.Add(txt_comname.Text,ddl_state.SelectedItem.Text,ddl_city.SelectedItem.Text,txt_comemail.Text,txt_conname.Text,rbl_gender.SelectedValue,txt_conemail.Text,url,txt_concell.Text );
            }
            else
            {
                int i = Convert.ToInt32(hid.Value);
                dt.Rows[i][0] = txt_comname.Text;
                dt.Rows[i][1] = ddl_state.SelectedItem.Text;
                dt.Rows[i][2] = ddl_city.SelectedItem.Text;
                dt.Rows[i][3] = txt_comemail.Text;
                dt.Rows[i][4] = txt_conname.Text;
                dt.Rows[i][5] = rbl_gender.SelectedValue;
                dt.Rows[i][6] = txt_conemail.Text;
                dt.Rows[i][7] = url;
                dt.Rows[i][8] = txt_concell.Text;

                Session["dt"] = null;
                Session["dt"] = dt;
                btn_add.Text = "add";
            }
            gv_comdetail.DataSource = dt;
            gv_comdetail.DataBind();
            btn_submit.Enabled = true;
            clear();
        }
    protected void btn_cancel_Click(object sender, EventArgs e)
        {
            btn_add.Text = "add";
            clear();
        }

    //public void insert(hardik_com_p2regi hcp)
    //{
    //    dc.hardik_com_p2regisinsert(hcp.com_name, hcp.com_state, hcp.com_city, hcp.com_email, hcp.con_name, hcp.con_gen, hcp.con_email, hcp.con_photo, hcp.con_cell);
    //}

    protected void btn_submit_Click(object sender, EventArgs e)
    {
        int r = 0, l = dt.Rows.Count;
        if (Request.QueryString["id"] != null)
        {
            int s = Convert.ToInt32(Request.QueryString["id"].ToString());
            var r1 = from h in dc.hardik_com_p2regis
                    where h.com_id == s
                    select h;
            if (r1.FirstOrDefault() != null)
            {
                var sid = from h in dc.hardik_com_states
                          where h.s_name == dt.Rows[r][1].ToString()
                          select h.s_id;

                var cid = from h in dc.hardik_com_cities
                          where h.c_name == dt.Rows[r][2].ToString()
                          select h.c_id;

                using (DataClassesDataContext dc1 = new DataClassesDataContext())
                {
                    dc1.hardik_com_p2regisupdate(s,dt.Rows[r][0].ToString(), Convert.ToString(sid.FirstOrDefault()), Convert.ToString(cid.FirstOrDefault()), dt.Rows[r][3].ToString(), dt.Rows[r][4].ToString(), dt.Rows[r][5].ToString(), dt.Rows[r][6].ToString(), dt.Rows[r][7].ToString(), dt.Rows[r][8].ToString());
                    dc1.SubmitChanges();
                }

                //var up = (from b in dc.hardik_com_p2regis
                //          where b.com_id == s
                //          select b).ToList();
                //foreach (var a in up)
                //{
                //    a.com_name = dt.Rows[r][0].ToString();
                //    a.com_state = Convert.ToString(sid.FirstOrDefault());
                //    a.com_city = Convert.ToString(cid.FirstOrDefault());
                //    a.com_email = dt.Rows[r][3].ToString();
                //    a.con_name = dt.Rows[r][4].ToString();
                //    a.con_gen = dt.Rows[r][5].ToString();
                //    a.con_email = dt.Rows[r][6].ToString();
                //    a.con_photo = dt.Rows[r][7].ToString();
                //    a.con_cell = dt.Rows[r][8].ToString();
                //}
                dc.SubmitChanges();
                r++;
            }
        }
        hardik_com_p2regi hcp2 = new hardik_com_p2regi();
      
        for (; r < l; r++)
        {
            var sid = from h in dc.hardik_com_states
                      where h.s_name == dt.Rows[r][1].ToString()
                      select h.s_id;

            var cid = from h in dc.hardik_com_cities
                      where h.c_name == dt.Rows[r][2].ToString()
                      select h.c_id;

            using (DataClassesDataContext dc1 = new DataClassesDataContext())
            {
                dc1.hardik_com_p2regisinsert(dt.Rows[r][0].ToString(), Convert.ToString(sid.FirstOrDefault()), Convert.ToString(cid.FirstOrDefault()), dt.Rows[r][3].ToString(), dt.Rows[r][4].ToString(), dt.Rows[r][5].ToString(), dt.Rows[r][6].ToString(), dt.Rows[r][7].ToString(), dt.Rows[r][8].ToString());
                dc1.SubmitChanges();
            }
            //hcp2.com_name = dt.Rows[r][0].ToString();
            //hcp2.com_state = Convert.ToString(sid.FirstOrDefault());
            //hcp2.com_city = Convert.ToString(cid.FirstOrDefault()); ;
            //hcp2.com_email = dt.Rows[r][3].ToString();
            //hcp2.con_name = dt.Rows[r][4].ToString();
            //hcp2.con_gen = dt.Rows[r][5].ToString();
            //hcp2.con_email = dt.Rows[r][6].ToString();
            //hcp2.con_photo = dt.Rows[r][7].ToString();
            //hcp2.con_cell = dt.Rows[r][8].ToString();
            //dc.hardik_com_p2regis.InsertOnSubmit(hcp2);
            //dc.SubmitChanges(); 
        }
        Response.Redirect("Default.aspx");
    }
    protected void editDetail(object sender, EventArgs e)
    {
        ImageButton ib = (ImageButton)sender;
        GridViewRow gr = ib.NamingContainer as GridViewRow;
        hid.Value = gr.RowIndex.ToString();

        Label l1 = (Label)gr.FindControl("lbl_cname");
        txt_comname.Text = l1.Text;
        Label l2 = (Label)gr.FindControl("lbl_cstate");
        conn.BindState(ddl_state);
        ddl_state.SelectedValue = ddl_state.Items.FindByText(l2.Text).Value;
        Label l3 = (Label)gr.FindControl("lbl_ccity");
        conn.BindCity(ddl_state.SelectedIndex.ToString(), ddl_city);
        ddl_city.SelectedValue = ddl_city.Items.FindByText(l3.Text).Value;
        Label l4 = (Label)gr.FindControl("lbl_cemail");
        txt_comemail.Text = l4.Text;
        Label l5 = (Label)gr.FindControl("lbl_cpname");
        txt_conname.Text = l5.Text;
        Label l6 = (Label)gr.FindControl("lbl_cpgen");
        rbl_gender.SelectedValue = rbl_gender.Items.FindByText(l6.Text).Value;
        Label l7 = (Label)gr.FindControl("lbl_cpemail");
        txt_conemail.Text = l7.Text;
        img_photo.Visible = true;
        Image photo = (Image)gr.FindControl("lbl_cpphoto");
        img_photo.ImageUrl = photo.ImageUrl;
        Label l9 = (Label)gr.FindControl("lbl_cpcell");
        txt_concell.Text = l9.Text;
        btn_add.Text = "update";
    }
    protected void deleteDetail(object sender, EventArgs e)
    {
        btn_add.Text = "add";
        btn_submit.Enabled = true;
        ImageButton ib = (ImageButton)sender;
        GridViewRow gr = ib.NamingContainer as GridViewRow;
        Image photo = (Image)gr.FindControl("lbl_cpphoto");
        string s = Path.Combine(Server.MapPath("~//"),photo.ImageUrl);
        File.Delete(s);
        dt.Rows[gr.RowIndex].Delete();
        Session["dt"] = dt;
        gv_comdetail.DataSource = dt;
        gv_comdetail.DataBind();
        if (dt.Rows.Count == 0)
        {
            btn_submit.Enabled = false;
        }
    }
    public void clear()
    {
        txt_comname.Text = null;
        ddl_state.SelectedValue = null;
        ddl_city.SelectedValue = null;
        txt_comemail.Text = null;
        txt_conname.Text = null;
        rbl_gender.SelectedValue = null;
        txt_conemail.Text = null;
        txt_concell.Text = null;
      
    }
}