I have DetailsView on my page. I set DefaultMode="Edit"
. Now i want to get value that user will edit in this cell.
<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>
I've tried many ways to get this value, such as:
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;
}
}
But it doesn't work... How to get this value using this mode. I know that i can use <ItemTemplate>
instead of <BoundField>
, but anyway it should be some way to get this value from this field.
Help please!
Thank you!
Unfortunately, trying to access the Text
of ..Cells[1]
is not what you are looking for. You need the value of the TextBox
control within that cell:
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
}
}