C# 如何使用asp.net C在同一页面中显示两个网格视图#

C# 如何使用asp.net C在同一页面中显示两个网格视图#,c#,asp.net,gridview,C#,Asp.net,Gridview,我创建了这段代码来显示两个网格视图。单击按钮1时显示第一个网格视图(GridView1),单击按钮3时显示第二个网格视图(GridView2)。但问题是只显示第一个网格视图。当我单击按钮3时,第二个栅格视图不显示,第一个栅格视图也消失。这背后的原因可能是什么 using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using Syst

我创建了这段代码来显示两个网格视图。单击按钮1时显示第一个网格视图(GridView1),单击按钮3时显示第二个网格视图(GridView2)。但问题是只显示第一个网格视图。当我单击按钮3时,第二个栅格视图不显示,第一个栅格视图也消失。这背后的原因可能是什么

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

namespace ContractManagement
{
    public partial class WebForm2 : System.Web.UI.Page
    {
        DataTable dt;
        DataTable dt1;
        Int64 totalprice;
        Int64 totalamount;
        

        string strcon = ConfigurationManager.ConnectionStrings["con"].ConnectionString;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                dt = new DataTable();
                dt.Columns.Add("mid");
                dt.Columns.Add("materialname");
                dt.Columns.Add("quantity");
                dt.Columns.Add("unitprice");
                dt.Columns.Add("total");
                Session["data"] = dt;
                TextBox2.Text = "";

                dt1 = new DataTable();
                dt1.Columns.Add("lrid");
                dt1.Columns.Add("labourrole");
                dt1.Columns.Add("salaryperday");
                dt1.Columns.Add("noofdays");
                dt1.Columns.Add("noofworkers");
                dt1.Columns.Add("amount");
                Session["data1"] = dt1;
                TextBox8.Text = "";


               
                

            }

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            dt = (DataTable)Session["data"];
            DataRow dr;
            dr = dt.NewRow();
            if (dt.Rows.Count > 0)
            {
                dr["mid"] = TextBox2.Text;
                dr["materialname"] = TextBox1.Text;
                dr["quantity"] = TextBox3.Text;
                dr["unitprice"] = TextBox4.Text;
                totalprice = Convert.ToInt64(TextBox3.Text) * Convert.ToInt64(TextBox4.Text);
                dr["total"] = totalprice.ToString();


                SqlConnection con = new SqlConnection(strcon);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }

                SqlCommand cmd = new SqlCommand("INSERT INTO Estimation_Raw_Material(Est_ID,TID,MID,material_name,unit_price,estimated_quantity) values(@Est_ID,@TID,@MID,@material_name,@unit_price,@estimated_quantity)", con);
                cmd.Parameters.AddWithValue("@Est_ID", TextBox5.Text.Trim());
                cmd.Parameters.AddWithValue("@TID", TextBox6.Text.Trim());
                cmd.Parameters.AddWithValue("@MID", TextBox2.Text.Trim());
                cmd.Parameters.AddWithValue("@material_name", TextBox1.Text.Trim());
                cmd.Parameters.AddWithValue("@unit_price", TextBox3.Text.Trim());
                cmd.Parameters.AddWithValue("@estimated_quantity", TextBox4.Text.Trim());
                //cmd.Parameters.AddWithValue("@estimated_amount", GridView1.Rows[1].Cells[5].Text.Trim());

                cmd.ExecuteNonQuery();
                con.Close();
                //Response.Write("<script>alert('Sign Up Successful. Go to User Login to Login');</script>");


            }
            else
            {
                dr["mid"] = TextBox2.Text;
                dr["materialname"] = TextBox1.Text;
                dr["quantity"] = TextBox3.Text;
                dr["unitprice"] = TextBox4.Text;
                totalprice = Convert.ToInt64(TextBox3.Text) * Convert.ToInt64(TextBox4.Text);
                dr["total"] = totalprice.ToString();

                SqlConnection con = new SqlConnection(strcon);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }

                SqlCommand cmd = new SqlCommand("INSERT INTO Estimation_Raw_Material(Est_ID,TID,MID,material_name,unit_price,estimated_quantity) values(@Est_ID,@TID,@MID,@material_name,@unit_price,@estimated_quantity)", con);
                cmd.Parameters.AddWithValue("@Est_ID", TextBox5.Text.Trim());
                cmd.Parameters.AddWithValue("@TID", TextBox6.Text.Trim());
                cmd.Parameters.AddWithValue("@MID", TextBox2.Text.Trim());
                cmd.Parameters.AddWithValue("@material_name", TextBox1.Text.Trim());
                cmd.Parameters.AddWithValue("@unit_price", TextBox3.Text.Trim());
                cmd.Parameters.AddWithValue("@estimated_quantity", TextBox4.Text.Trim());
                //cmd.Parameters.AddWithValue("@estimated_amount", GridView1.Rows[1].Cells[4].Text.Trim());

                cmd.ExecuteNonQuery();
                con.Close();

            }
            dt.Rows.Add(dr);
            GridView1.DataSource = dt;
            GridView1.DataBind();
            Session["buyitems"] = dt;
            TextBox2.Text = ""; //(dt.Rows.Count + 1).ToString();
            TextBox1.Text = "";
            TextBox3.Text = "";
            TextBox4.Text = "";
            calculateSum();

        }


        private void calculateSum()
        {
            Int32 grandtotal = 0;
            foreach (GridViewRow row in GridView1.Rows)
            {

                grandtotal = grandtotal + Convert.ToInt32(row.Cells[4].Text); //Where Cells is the column. Just changed the index of cells
            }
            GridView1.FooterRow.Cells[3].Text = "Grand Total";
            GridView1.FooterRow.Cells[4].Text = grandtotal.ToString();
            Label3.Text = "Price(in Words) " + ConvertNumbertoWords(grandtotal);
        }
        public static string ConvertNumbertoWords(int number)
        {
            if (number == 0)
                return "ZERO";
            if (number < 0)
                return "minus " + ConvertNumbertoWords(Math.Abs(number));
            string words = "";
            if ((number / 100000) > 0)
            {
                words += ConvertNumbertoWords(number / 100000) + " Lacs ";
                number %= 100000;
            }
            if ((number / 1000) > 0)
            {
                words += ConvertNumbertoWords(number / 1000) + " Thousand ";
                number %= 1000;
            }
            if ((number / 100) > 0)
            {
                words += ConvertNumbertoWords(number / 100) + " Hundred ";
                number %= 100;
            }
            if (number > 0)
            {
                if (words != "")
                    words += "AND ";
                var unitsMap = new[] { "Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" };
                var tensMap = new[] { "Zero", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" };

                if (number < 20)
                    words += unitsMap[number];
                else
                {
                    words += tensMap[number / 10];
                    if ((number % 10) > 0)
                        words += " " + unitsMap[number % 10];
                }
            }
            return words;
        }


        protected void Button2_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection(strcon);
            if (con.State == ConnectionState.Closed)
            {
                con.Open();
            }

            SqlCommand cmd = new SqlCommand("INSERT INTO Estimation(Est_ID,TID,Total_Cost,Location,Status) values(@Est_ID,@TID,@Total_Cost,@Location,@Status)", con);
            
            cmd.Parameters.AddWithValue("@Est_ID", TextBox5.Text.Trim());
            cmd.Parameters.AddWithValue("@TID", TextBox6.Text.Trim());
            cmd.Parameters.AddWithValue("@Total_Cost", GridView1.FooterRow.Cells[4].Text.Trim());
            cmd.Parameters.AddWithValue("@Location", TextBox7.Text.Trim());
            cmd.Parameters.AddWithValue("@Status", "Pending");




            cmd.ExecuteNonQuery();
            con.Close();
        }

        protected void Button3_Click(object sender, EventArgs e)
        {
            dt1 = (DataTable)Session["data1"];
            DataRow dr1;
            dr1 = dt1.NewRow();
            if (dt1.Rows.Count > 0)
            {
                dr1["lrid"] = TextBox8.Text;
                dr1["labourrole"] = TextBox9.Text;
                dr1["salaryperday"] = TextBox10.Text;
                dr1["noofdays"] = TextBox11.Text;
                dr1["noofworkers"] = TextBox12.Text;
                totalamount = Convert.ToInt64(TextBox10.Text) * Convert.ToInt64(TextBox11.Text) * Convert.ToInt64(TextBox12.Text);
                dr1["amount"] = totalamount.ToString();


                SqlConnection con = new SqlConnection(strcon);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }

                SqlCommand cmd = new SqlCommand("INSERT INTO Estimation_LabourRole(Est_ID,TID,LRID,Labour_Role,Salary_Per_day,No_of_days,No_of_workers) values(@Est_ID,@TID,@LRID,@Labour_Role,@Salary_Per_day,@No_of_days,@No_of_workers)", con);
                cmd.Parameters.AddWithValue("@Est_ID", TextBox5.Text.Trim());
                cmd.Parameters.AddWithValue("@TID", TextBox6.Text.Trim());
                cmd.Parameters.AddWithValue("@LRID", TextBox8.Text.Trim());
                cmd.Parameters.AddWithValue("@Labour_Role", TextBox9.Text.Trim());
                cmd.Parameters.AddWithValue("@Salary_Per_day", TextBox10.Text.Trim());
                cmd.Parameters.AddWithValue("@No_of_days", TextBox11.Text.Trim());
                cmd.Parameters.AddWithValue("@No_of_workers", TextBox12.Text.Trim());
                //cmd.Parameters.AddWithValue("@estimated_amount", GridView1.Rows[1].Cells[5].Text.Trim());

                cmd.ExecuteNonQuery();
                con.Close();
                //Response.Write("<script>alert('Sign Up Successful. Go to User Login to Login');</script>");


            }
            else
            {
                dr1["lrid"] = TextBox8.Text;
                dr1["labourrole"] = TextBox9.Text;
                dr1["salaryperday"] = TextBox10.Text;
                dr1["noofdays"] = TextBox11.Text;
                dr1["noofworkers"] = TextBox12.Text;
                totalamount = Convert.ToInt64(TextBox10.Text) * Convert.ToInt64(TextBox11.Text) * Convert.ToInt64(TextBox12.Text);
                dr1["amount"] = totalamount.ToString();


                SqlConnection con = new SqlConnection(strcon);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }

                SqlCommand cmd = new SqlCommand("INSERT INTO Estimation_LabourRole(Est_ID,TID,LRID,Labour_Role,Salary_Per_day,No_of_days,No_of_workers) values(@Est_ID,@TID,@LRID,@Labour_Role,@Salary_Per_day,@No_of_days,@No_of_workers)", con);
                cmd.Parameters.AddWithValue("@Est_ID", TextBox5.Text.Trim());
                cmd.Parameters.AddWithValue("@TID", TextBox6.Text.Trim());
                cmd.Parameters.AddWithValue("@LRID", TextBox8.Text.Trim());
                cmd.Parameters.AddWithValue("@Labour_Role", TextBox9.Text.Trim());
                cmd.Parameters.AddWithValue("@Salary_Per_day", TextBox10.Text.Trim());
                cmd.Parameters.AddWithValue("@No_of_days", TextBox11.Text.Trim());
                cmd.Parameters.AddWithValue("@No_of_workers", TextBox12.Text.Trim());
                //cmd.Parameters.AddWithValue("@estimated_amount", GridView1.Rows[1].Cells[5].Text.Trim());

                cmd.ExecuteNonQuery();
                con.Close();
            }
            dt1.Rows.Add(dr1);
            GridView2.DataSource = dt1;
            GridView2.DataBind();
            Session["buyitems1"] = dt1;
            TextBox8.Text = ""; //(dt.Rows.Count + 1).ToString();
            TextBox9.Text = "";
            TextBox10.Text = "";
            TextBox11.Text = "";
            TextBox12.Text = "";
            calculateSum();






        }
    }
} 
使用System.Collections.Generic;
使用系统配置;
使用系统数据;
使用System.Data.SqlClient;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControl;
命名空间契约管理
{
公共部分类WebForm2:System.Web.UI.Page
{
数据表dt;
数据表dt1;
Int64总价;
Int64总金额;
字符串strcon=ConfigurationManager.ConnectionString[“con”].ConnectionString;
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
dt=新数据表();
dt.列。添加(“中间”);
dt.列。添加(“材料名称”);
dt.列。添加(“数量”);
dt.列。添加(“单价”);
dt.列加上(“总计”);
会话[“数据”]=dt;
TextBox2.Text=“”;
dt1=新数据表();
dt1.列。添加(“lrid”);
dt1.列。添加(“劳动角色”);
dt1.列。添加(“salaryperday”);
dt1.列。添加(“noofdays”);
dt1.列。添加(“noofworkers”);
dt1.列。添加(“金额”);
会话[“数据1”]=dt1;
TextBox8.Text=“”;
}
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
dt=(数据表)会话[“数据”];
数据行dr;
dr=dt.NewRow();
如果(dt.Rows.Count>0)
{
dr[“mid”]=TextBox2.Text;
dr[“materialname”]=TextBox1.Text;
dr[“数量”]=TextBox3.Text;
dr[“单价”]=TextBox4.Text;
totalprice=Convert.ToInt64(TextBox3.Text)*Convert.ToInt64(TextBox4.Text);
dr[“total”]=totalprice.ToString();
SqlConnection con=新的SqlConnection(strcon);
if(con.State==ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd=新的SqlCommand(“插入到估算的原材料中(估算ID、TID、MID、材料名称、单价、估算数量)”值(@Est ID、@TID、@MID、@Material名称、@unit价格、@estimated数量)”,con);
cmd.Parameters.AddWithValue(“@Est_ID”,TextBox5.Text.Trim());
cmd.Parameters.AddWithValue(“@TID”,TextBox6.Text.Trim());
cmd.Parameters.AddWithValue(“@MID”,TextBox2.Text.Trim());
cmd.Parameters.AddWithValue(“@material_name”,TextBox1.Text.Trim());
cmd.Parameters.AddWithValue(“@unit_price”,TextBox3.Text.Trim());
cmd.Parameters.AddWithValue(“@estimated_quantity”,TextBox4.Text.Trim());
//cmd.Parameters.AddWithValue(“@estimated_amount”,GridView1.Rows[1]。Cells[5]。Text.Trim());
cmd.ExecuteNonQuery();
con.Close();
//响应。写入(“警报(‘注册成功。转到用户登录以登录’);”;
}
其他的
{
dr[“mid”]=TextBox2.Text;
dr[“materialname”]=TextBox1.Text;
dr[“数量”]=TextBox3.Text;
dr[“单价”]=TextBox4.Text;
totalprice=Convert.ToInt64(TextBox3.Text)*Convert.ToInt64(TextBox4.Text);
dr[“total”]=totalprice.ToString();
SqlConnection con=新的SqlConnection(strcon);
if(con.State==ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd=新的SqlCommand(“插入到估算的原材料中(估算ID、TID、MID、材料名称、单价、估算数量)”值(@Est ID、@TID、@MID、@Material名称、@unit价格、@estimated数量)”,con);
cmd.Parameters.AddWithValue(“@Est_ID”,TextBox5.Text.Trim());
cmd.Parameters.AddWithValue(“@TID”,TextBox6.Text.Trim());
cmd.Parameters.AddWithValue(“@MID”,TextBox2.Text.Trim());
cmd.Parameters.AddWithValue(“@material_name”,TextBox1.Text.Trim());
cmd.Parameters.AddWithValue(“@unit_price”,TextBox3.Text.Trim());
cmd.Parameters.AddWithValue(“@estimated_quantity”,TextBox4.Text.Trim());
//cmd.Parameters.AddWithValue(“@estimated_amount”,GridView1.Rows[1]。Cells[4]。Text.Trim());
cmd.ExecuteNonQuery();
con.Close();
}
dt.Rows.Add(dr);
GridView1.DataSource=dt;
GridView1.DataBind();
会话[“购买项目”]=dt;
TextBox2.Text=“”;/(dt.Rows.Count+1).ToString();
TextBox1.Text=“”;
TextBox3.Text=“”;
TextBox4.Text=“”;
计算um();
}
私有void calculateSum()
{
Int32 grandtotal=0;
foreach(GridView1.Rows中的GridViewRow行)
{
grandtotal=grandtotal+Convert.ToInt32(row.Cells[4].Text);//其中Cells是列。只更改了单元格的索引
}
GridView1.FooterRow.Cells[3].Text=“总计”;
GridView1.FooterRow.Cells[4]。Text=grandtotal.ToString();
Label3.Text=“价格(大写)”+ConvertNumbertoWords(总计);
}
公共静态字符串转换器numbertowords(整数)
{
如果(麻木)