我已经问过一个关于这个问题的问题,但是当我在我的 Web 应用程序中取得进展时,我再次偶然发现了这个问题,因为那里的答案给了我一个新问题。使用该解决方案时,我遇到的问题是更新按钮没有读取我的 gridview 文本框中的新值,而是读取了旧值。
代码隐藏
有了这个它不使用新值:
protected void Page_Load(object sender, EventArgs e)
{
LoadData();
if (!Page.IsPostBack)
{
DataBinder();
}
}
private void DataBinder()
{
Grid30.DataBind();
Grid31.DataBind();
Grid32.DataBind();
Grid33.DataBind();
Grid34.DataBind();
Grid35.DataBind();
Grid36.DataBind();
Grid37.DataBind();
Grid38.DataBind();
Grid40.DataBind();
Grid41.DataBind();
Grid42.DataBind();
Grid43.DataBind();
Grid44.DataBind();
Grid45.DataBind();
Grid51.DataBind();
Grid52.DataBind();
Grid53.DataBind();
Grid54.DataBind();
Grid55.DataBind();
Grid56.DataBind();
Grid57.DataBind();
Grid58.DataBind();
Grid61.DataBind();
Grid62.DataBind();
Grid63.DataBind();
Grid64.DataBind();
}
有了这个,它得到了新的价值,但它不再刷新:
protected void Page_Load(object sender, EventArgs e)
{
LoadData();
DataBinder();
}
private void DataBinder()
{
if (!Page.IsPostBack)
{
Grid30.DataBind();
Grid31.DataBind();
Grid32.DataBind();
Grid33.DataBind();
Grid34.DataBind();
Grid35.DataBind();
Grid36.DataBind();
Grid37.DataBind();
Grid38.DataBind();
Grid40.DataBind();
Grid41.DataBind();
Grid42.DataBind();
Grid43.DataBind();
Grid44.DataBind();
Grid45.DataBind();
Grid51.DataBind();
Grid52.DataBind();
Grid53.DataBind();
Grid54.DataBind();
Grid55.DataBind();
Grid56.DataBind();
Grid57.DataBind();
Grid58.DataBind();
Grid61.DataBind();
Grid62.DataBind();
Grid63.DataBind();
Grid64.DataBind();
}
}
更新/加载数据代码
protected void Grid36_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = Grid36.Rows[e.RowIndex];
var txtQuantity = (TextBox)row.FindControl("Spoor36TB");
int quantity = int.Parse(txtQuantity.Text);
Grid36.EditIndex = -1;
DataBinder();
}
private void LoadData()
{
foreach(Rail rail in getAllPositions())
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn(rail.RailNr.ToString(), typeof(string)));
for (int i = 0; i < rail.AmountOfPositions; i++)
{
DataRow dr = dt.NewRow();
dr[rail.RailNr.ToString()] = "1";
dt.Rows.Add(dr);
}
DataSources(rail.RailNr, dt);
}
}
编辑 好吧,我删除了 DataBinder(); 在 Grid36_RowEditing() 下。这不是真正的解决方案,但目前是一个糟糕的解决方法。现在我必须按两次编辑按钮,但至少我能够更新网格。虽然这对我的问题来说不是/一个可怕的解决方案,但我希望有人仍然能够给我一个真正的解决方案
protected void Grid36_RowEditing(object sender, GridViewEditEventArgs e)
{
Grid36.EditIndex = e.NewEditIndex;
//DataBinder();
}