Помещать строки в GridView одну за другой всякий раз, когда срабатывает событие on click в asp.net

#c# #.net #gridview #datatable

#c# #.net #gridview #datatable

Вопрос:

Я хочу добавлять данные (или строку) в сетку всякий раз, когда я нажимаю на кнопку.

Таким образом, код, стоящий за кнопкой, подобен тому, как всякий раз, когда пользователь нажимает на кнопку, параметризуется хранимая процедура, вызываемая, которая получает данные с SQL Server. Таким образом, каждый раз он будет получать только одну запись.

Проблема в том, что когда пользователь нажимает на кнопку, он успешно получает первую строку, а затем снова, когда пользователь нажимает на кнопку, он переопределяет данные, присутствующие в строке [0].

Я хочу, чтобы всякий раз, когда пользователь нажимал в другой раз. данные поступают в следующую строку, а данные, присутствующие в предыдущей строке, остаются неизменными.

Метод нажатия кнопки:

 protected void Button5_Click(object sender, EventArgs e)
{
    getLotteryApplications();
}

private void getLotteryApplications()
{
        try
        {
            int serialNumber = 0, preference = 0;

            if (SerialNum.Text != "0")
            {
                serialNumber = Int32.Parse(SerialNum.Text.ToString());
            }

            if (ddlPreferenceLottery.SelectedValue != "0")
            {
                preference = Int32.Parse(ddlPreferenceLottery.SelectedValue.ToString());
            }

            DataTable dt = DL_School_Detail.getLotteryApplications(serialNumber, preference);
            selectedStudentView.DataSource = dt;
            selectedStudentView.DataBind();
        }
        catch (Exception ex)
        {
        }
}
  

Вызывающий класс:

 public static DataTable getLotteryApplications(int serial,int preference)
{
    DataTable dt = new DataTable();

    try
    {
        using (SqlConnection con = new SqlConnection(Connect.getConnection()))
        {
            using (SqlCommand cmd = new SqlCommand("[dbo].[GetLotterySelectedCandidates]", con))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@serialNumber", serial);
                cmd.Parameters.AddWithValue("@preference", preference);

                using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                {
                    using (DataSet ds = new DataSet())
                    {
                        da.Fill(ds);
                        dt = ds.Tables[0];
                    }
                }
            }
        }
    }
    catch (Exception ex)
    {
    }

    return dt;
}
  

Ответ №1:

 private void AddNewRowToGrid()
    {
           try
          {
            int serialNumber = 0, preference = 0;
            if (SerialNum.Text != "0")
            {
                serialNumber = Int32.Parse(SerialNum.Text.ToString());
            }
            if (ddlPreferenceLottery.SelectedValue != "0")
            {
                preference = Int32.Parse(ddlPreferenceLottery.SelectedValue.ToString());
            }
            DataTable griddt;
            DataTable griddt2;
            if (ViewState["Row"] != null)
            {
                griddt = (DataTable)(ViewState["Row"]);
                DataRow dr = null;
                if (griddt.Rows.Count > 0)
                {
                    griddt2 = DL_School_Detail.getLotteryApplications(serialNumber, preference);
                    griddt.Merge(griddt2, true, MissingSchemaAction.Ignore);
                    if (griddt.Rows.Count > 0)
                    {
                        ViewState["Row"] = griddt;
                        ContentPlaceHolder1_selectedStudentView.DataSource = griddt;

                        ContentPlaceHolder1_selectedStudentView.DataBind();
                    }
                    else
                    {
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('कृपया सही सीरियल नंबर और  प्राथमिकता चुने !')", true);
                    }
                }

            }
            else
            {
                DataTable dt = DL_School_Detail.getLotteryApplications(serialNumber, preference);
                //dt.Merge(griddt, true, MissingSchemaAction.Ignore);
                if (dt.Rows.Count > 0)
                {
                    ViewState["Row"] = dt;
                    ContentPlaceHolder1_selectedStudentView.DataSource = ViewState["Row"];

                    ContentPlaceHolder1_selectedStudentView.DataBind();
                }
                else
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('कृपया सही सीरियल नंबर और  प्राथमिकता चुने !')", true);
                }
            }
        }
        catch (Exception ex)
        {

        }
    }