如何从ASP.NET中的DetailsView控件获取值?

我的页面上有DetailsView。 我设置DefaultMode="Edit" 。 现在我想获得用户将在此单元格中编辑的值。

         

我已经尝试了很多方法来获得这个值,例如:

 protected void dvApplicantDetails_ItemCommand(object sender, DetailsViewCommandEventArgs e) { if (e.CommandName == "Update") { string firstName = dvApplicantDetails.Rows[1].Cells[1].Text; string lastName = dvApplicantDetails.Rows[2].Cells[1].Text; } } 

但它不起作用……如何使用此模式获取此值。 我知道我可以使用而不是 ,但无论如何它应该是从这个字段获取此值的某种方式。 请帮忙! 谢谢!

不幸的是,尝试访问..Cells[1]Text并不是你想要的。 您需要该单元格中TextBox控件的值:

 protected void dvApplicantDetails_ItemCommand(object sender, DetailsViewCommandEventArgs e) { if (e.CommandName == "Update") { string firstName = ((TextBox)dvApplicantDetails.Rows[1].Cells[1].Controls[0]).Text; string lastName = ((TextBox)dvApplicantDetails.Rows[2].Cells[1].Controls[0]).Text } } 

Bryuk,

请尝试OnItemUpdating事件。 您可以获得如下所示的新值:

 protected void dvApplicantDetails_ItemUpdating(object sender, DetailsViewUpdateEventArgs e) { var dv = sender as DetailsView; var firstName = e.NewValues[1].ToString(); var lastName = e.NewValues[2].ToString(); } 

将OnItemUpdating =“dvApplicantDetails_ItemUpdating”属性添加到aspx中的DetailsView控件。

我今天早些时候需要这样做…对于有助于我的问题和答案。 这是我想出的一个function。

 protected void Page_Load(object sender, EventArgs e) { string sFirstName = GetDVRowValue(dvApplicantDetails, "ApplicantID") } public string GetDVRowValue(DetailsView dv, string sField) { string sRetVal = string.Empty; foreach (DetailsViewRow dvr in dv.Rows) { if (dvr.Cells[0].Text == sField) sRetVal = dvr.Cells[1].Text; } return sRetVal; }