3

私のページには 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>が、とにかく、このフィールドからこの値を取得する方法が必要です。助けてください!ありがとうございました!

4

3 に答える 3

0

私は今日早くこれを行う必要がありました...私を助けた質問と回答のために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;
}
于 2018-01-27T17:33:41.210 に答える