如何从 ASP.NET 中的详细信息视图控件获取值
本文关键字:视图 详细信息 控件 获取 ASP NET | 更新日期: 2023-09-27 18:30:29
我的页面上有DetailsView。我设置DefaultMode="Edit"
.现在我想获取用户将在此单元格中编辑的值。
<asp:DetailsView ID="dvApplicantDetails" runat="server"
AutoGenerateRows="false" DataKeyNames="ApplicantID" DefaultMode="Edit"
onitemcommand="dvApplicantDetails_ItemCommand" >
<Fields>
<asp:BoundField DataField="ApplicantID" HeaderText="ApplicantID" ReadOnly="true"/>
<asp:BoundField DataField="FirstName" HeaderText="First Name" />
<asp:BoundField DataField="LastName" HeaderText="Last Name" />
<asp:CommandField ButtonType="Button" ShowEditButton="true" EditText="Update" ShowCancelButton="false" />
</Fields>
</asp:DetailsView>
我尝试了很多方法来获取此值,例如:
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;
}
}
但它不起作用...如何使用此模式获取此值。我知道我可以使用<ItemTemplate>
而不是<BoundField>
,但无论如何,它应该是从这个字段中获取此值的某种方法。请帮忙!谢谢!
不幸的是,尝试访问..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,
请改用 OnItemUpdate 事件。您可以获取新值,如下所示:
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 控件。
我今天早些时候需要这样做......1up 帮助我的问题和答案。这是我想出的一个功能。
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;
}