2
我已经问了一个question关于这个问题,但随着我在我的web应用程序的进步,我偶然发现了这个问题,因为那里的答案给了我一个新问题。有了这个解决方案,我遇到了这样的问题,即更新按钮没有读取我gridview文本框中的新值,而是读取了旧值。页面没有刷新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();
}
您从数据绑定代码时,它的初始加载为你的国家,如果它不是一个回发只执行。 – AssaultingCuccos
为什么在回发中调用'LoadData'?你应该把它放在'!PostBack'检查中。通常情况下:启用ViewState时(默认),不要从'Page_Load'回发数据。 –
什么是您的LoadData做..也如果它不是一个PostBack当然它会工作..所以你需要添加逻辑,将加载,无论它是否是postaback或不写或逻辑,将检查如果IsPostBack,并存储如果需要,你需要显示什么LoadData();方法看起来像 – MethodMan