我有一个附有gridview的网页。 gridview允许用户更新单个记录。 gridview看起来像这样:
JobSiteID JobSite1
1 13-03
2 13-04
3 13-06
4 13-09
5 13-15
我创建了以下记录更新事件处理程序:
protected void changeJobSiteRecordsGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = changeJobSiteRecordsGridView.Rows[e.RowIndex];
TextBox txtJobSite = row.FindControl("txtJobSite") as TextBox;
if (txtJobSite != null)
{
using (ABCEntities4 Context = new ABCEntities4())
{
int jobSiteID = Convert.ToInt32(changeJobSiteRecordsGridView.DataKeys[e.RowIndex].Value);
JobSite obj = Context.JobSites.First(x => x.JobSiteID == jobSiteID);
obj.JobSite1 = txtJobSite.Text;
Context.SaveChanges();
changeJobSiteRecordsGridView.EditIndex = -1;
changeJobSiteRecordsGridView.DataSource = Context.JobSites;
changeJobSiteRecordsGridView.DataBind();
}
}
}
这是我的问题:
当我选择在第一行更新(例如第2行)时,本地“行”变量表示RowIndex == 1
。
但是,在第二行中,我希望txtJobSite变量用“13-04”填充,但VS为变量赋予“null”。
结果,代码流过下面的if then语句,这不是预期的。
非常感谢任何帮助。
感谢。
答案 0 :(得分:1)
检查行的单元格属性,如下所示:
row.Cells[1].Controls[0]
为文本框。如果'0'索引不起作用,请尝试1索引。然后你的代码看起来像这样:
TextBox txtJobSite = (TextBox)row.Cells[1].Controls[1]
我记得在FindControl中遇到了类似的问题。这样,您可以在单元格中明确找到单元格,然后查找控件。