#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)
{
}
}