从User Submission将DataGridView发送到新页面

时间:2016-03-01 18:37:08

标签: c# asp.net datagridview

我有一个Web表单,用户使用jQuery DatePicker提交日期范围。 然后将DatePicker连接到数据库并检索信息并显示DataGridView

    protected void DataGrid1(string FirstDate, string SecondDate)
    {
        DateTime fFirstDate;
        DateTime sSecondDate;
        DataTable dt = new Datatable(); 
        DataTable dt2 = new DataTable();

        //Check Valid Date Format

        if (DateTime.TryParse(FirstDate, out fFirstDate) && DateTime.TryParse(SecondDate, out sSecondDate))
        {
            SqlConnection con = new SqlConnection(GetConnectionString());
            try
            {
               con.Open();
               string sqlStatement = "SELECT * @DateFrom and @DateTo"
               SqlCommand cmd = new SqlCommand(SqlStatement, con);
               cmd.Parameters.AddWithValue("@DateFrom", fFirstDate)
               cmd.Parameters.AddWithValue("@DateTo", sSecondDate)
               sqlDataAdapter sql_adapter = new SqlDataAdapter(cmd);
               sql_adapter.Fill(dt);
               if (dt.Rows.Count > 0)
               { 
                  GridView1.DataSource = dt;
                  GridView1.DataBind();
               }
               else
               {}
             catch (System.Data.SqlClient.SqlException ex)
             {
                string msg = "Error"
                msg += ex.Message;
                throw new Exception(msg);
             }
             finally
             {
                con.Close();
             }

           //Repeat Try for DataTable2 creating new data source


      }

   }

上面我有我的代码,数据库从用户提交的日期范围中检索信息。下面是按钮点击代码。

    protected void Button1_Click(object sender, EventArgs e)
    {
        BindDataGrid1(TextFirstDate.Text, TextSecondDate.Text);
    }

当用户输入日期时,DataGridView将显示在同一页面上。有没有办法在提交后在新的webform上显示datagridview?

我尝试将重定向添加到新页面的按钮,并在新页面上为datagridview建立html代码,但我似乎无法正确使用它,因为它是一个新表单。

3 个答案:

答案 0 :(得分:0)

我只需在其上创建包含DataGrid的另一个页面,并在按钮单击时将日期参数作为查询字符串传递给它。

像这样:

使用Button和datepicker的页面:

protected void Button1_Click(object sender, EventArgs e)
{
    Response.Redirect(string.Format("MyDataGridPage.aspx?firstDate={0}&secondDate={1}", TextFirstDate.Text, TextSecondDate.Text));
}

DataGrid页面:

   protected void Page_Load(object sender, EventArgs e)
   {
        if (!Page.IsPostBack)
        {
            var firstDate = Request.QueryString["firstDate"] ?? DateTime.Now;
            var secondDate = Request.QueryString["secondDate"] ?? DateTime.Now.AddDays(1);

            BindDataGrid1(firstDate, secondDate);
        }
    }

答案 1 :(得分:0)

您应该使用跨页帖子。 在按钮中添加回发网址就像这样

在发布的页面中,您可以在pageload事件中获取日期输入的值 protected void Page_Load(object sender,EventArgs e)         {          TextBox txtstartdate;          TextBox txtEnddate;

     //getting controls from previous page
     txtstartdate= (TextBox)PreviousPage.FindControl("textboxID1");
     txtEnddate= (TextBox)PreviousPage.FindControl("textboxID2");
     BindDataGrid1(txtstartdate.Text , txtEnddate.Text);


   }

答案 2 :(得分:0)

我对您的代码进行了一些更改。使用DataGrid1(string FirstDate, string SecondDate),您需要返回DataTable作为结果并将此结果存储到session。例如

protected DataTable DataGrid1(string FirstDate, string SecondDate)
   {
        DateTime fFirstDate;
        DateTime sSecondDate;
        DataTable dt = new Datatable(); 
        DataTable dt2 = new DataTable();

        //Check Valid Date Format

        if (DateTime.TryParse(FirstDate, out fFirstDate) && DateTime.TryParse(SecondDate, out sSecondDate))
        {
            SqlConnection con = new SqlConnection(GetConnectionString());
            try
            {
               con.Open();
               string sqlStatement = "SELECT * @DateFrom and @DateTo"
               SqlCommand cmd = new SqlCommand(SqlStatement, con);
               cmd.Parameters.AddWithValue("@DateFrom", fFirstDate)
               cmd.Parameters.AddWithValue("@DateTo", sSecondDate)
               sqlDataAdapter sql_adapter = new SqlDataAdapter(cmd);
               sql_adapter.Fill(dt);
              return dt;
             catch (System.Data.SqlClient.SqlException ex)
             {
                string msg = "Error"
                msg += ex.Message;
                throw new Exception(msg);
             }
             finally
             {
                con.Close();
             }
      }
   }

在Button Click事件中调用此函数并将其值存储到Session例如

     protected void Button1_Click(object sender, EventArgs e)
     {       Session.Add("MyGridData",BindDataGrid1(TextFirstDate.Text,TextSecondDate.Text));
          Response.Redirect("Webform2.aspx");
     }

现在将您的网格放入Webform2.aspx并将以下代码写入

背后的代码中
protected void Page_Load(object sender, EventArgs e)
    {
       DataTable dt= (DataTable)Session["MyGridData"];
       if (dt.Rows.Count > 0)
        { 
             GridView1.DataSource = dt;
             GridView1.DataBind();
       }
    }