我的程序运行正常,页面加载后我的gridview加载成功,但是我遇到的问题是,当我单击编辑功能上的edit并输入新值并按update时,我的程序进入空白屏幕直到我再次从下拉列表中选择产品,它才会更新数据库,但是我希望它保持其状态并在单击“更新”后保持在同一页面上。这是我的代码。
public partial class Default : Page
{
private int Target { get; set; }
private string ProductShortDesc { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (ddlproduct.Items.Count == 0)
{
BindDropDownList();
RefreshGrid(ProductShortDesc);
}
}
}
private void BindDropDownList()
{
{
try
{
string[] productTexts;
string[] productValues;
BusinessManager biz = new BusinessManager();
biz.GetProductSeriesList(out productTexts, out productValues);
ddlproduct.Items.Clear();
int x = 0;
foreach (string s in productTexts)
{
ListItem li = new ListItem(s, productValues[x]);
x++;
ddlproduct.Items.Add(li);
}
}
catch (SqlException ex)
{
throw new Exception("Failed to get product items", ex);
}
catch (Exception ex)
{
throw new Exception("Failed to get product items:", ex);
}
}
}
protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
ProductShortDesc = ddlproduct.SelectedValue;
RefreshGrid(ProductShortDesc);
}
public void RefreshGrid(string productShortDesc)
{
try
{
// get the list of records & bind to the grid
BusinessManager biz = new BusinessManager();
ProductShortDesc = ddlproduct.SelectedValue;
DataTable dt = new DataTable();
dt = biz.GetPackingShiftData(ProductShortDesc);
GridView1.DataSource = dt.DefaultView;
GridView1.DataBind();
}
catch (SqlException ex)
{
throw new Exception("Could not populate the list due to an SQL error:", ex);
}
catch (Exception ex)
{
throw new Exception("Application error in adding products to the list:", ex);
}
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
// Assign Target property Value
try
{
TextBox tb =
(TextBox) GridView1.Rows[e.RowIndex].FindControl("TargetTextBox"); //finds the target column
Target = int.Parse((tb.Text));
int id = int.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());
using (DataManager dmgr = new DataManager())
{
dmgr.Connect("PRODUCTION");
dmgr.PackingShiftTargetUpdate(id, Target);
dmgr.Disconnect();
}
GridView1.EditIndex = -1;
DataBind();
}
catch (SqlException msg)
{
throw new Exception("Input error:", msg);
}
catch (Exception ex)
{
throw new Exception("Only a Number input is allowed:", ex);
}
}
protected void GridView1_OnRowEditing(object sender, GridViewEditEventArgs e)
{
try
{
RefreshGrid(ProductShortDesc);
GridView1.EditIndex = e.NewEditIndex;
DataBind();
}
catch (SqlException ex)
{
throw new Exception("Editing row error", ex);
}
catch (Exception ex)
{
throw new Exception("Application Error when editing application", ex);
}
}
protected void GridView1_OnRowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
try
{
//Reset the edit index.
GridView1.EditIndex = -1;
//Bind data to the GridView control.
DataBind();
}
catch (SqlException ex)
{
throw new Exception("error when editing row", ex);
}
catch (Exception ex)
{
throw new Exception("Application error when cancelling", ex);
}
}
protected void GridView1_OnRowUpdated(object sender, GridViewUpdatedEventArgs e)
{
GridView1.EditIndex = -1;
DataBind();
}
private void HandleSqlEx(SqlException ex, string Msg)
{
ExceptionLabel.ForeColor = Color.Red;
ExceptionLabel.Text = "SQL error:" + Msg;
}
private void HandleException(Exception ex, string Msg)
{
ExceptionLabel.ForeColor = Color.Red;
ExceptionLabel.Text = Msg;
}
}
}
答案 0 :(得分:1)
完成RefreshGrid
更新后,在GridView1_RowUpdating
事件中调用database
方法。
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
// Assign Target property Value
try
{
TextBox tb =
(TextBox) GridView1.Rows[e.RowIndex].FindControl("TargetTextBox"); //finds the target column
Target = int.Parse((tb.Text));
int id = int.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());
using (DataManager dmgr = new DataManager())
{
dmgr.Connect("PRODUCTION");
dmgr.PackingShiftTargetUpdate(id, Target);
dmgr.Disconnect();
}
GridView1.EditIndex = -1;
RefreshGrid(ProductShortDesc);
DataBind();
}
catch (SqlException msg)
{
throw new Exception("Input error:", msg);
}
catch (Exception ex)
{
throw new Exception("Only a Number input is allowed:", ex);
}
}