4

メンバーシッププロファイルからいくつかのデータを取得し、詳細ビューに表示する詳細ビューがあります...これは正常に機能します:

 <ItemTemplate>
                <asp:label ID="FirstName" runat="server" />
 </ItemTemplate>

しかし、編集ボタンをクリックしても、フィールドには何も表示されません。これは私が編集テンプレートで行っていることです:

私は次のように ItemUpdating を呼び出します:

    protected void DetailsView1_ItemUpdating(Object sender, DetailsViewUpdateEventArgs e)
    {
        //I get my memberprofle here
        MemberProfile memberp = MemberProfile.GetuserProfile(data);
        MembershipUser myuser = Membership.GetUser()

        Label labelfName = DetailsView1.FindControl("FirstName") as Label;
        labelfName.Text = memberp.fName;
    }

代わりに Itemupdated を使用する必要がありますか? または、編集ボタンがクリックされたときに呼び出す必要がある別のメソッドがあり、編集時に firstname フィールドにデータが入力されますか? また、編集モードで「LABEL」(通常はテキストボックス)として保持している理由は、このフィールドを読み取り専用にする必要があるためです。

4

2 に答える 2

1

編集モードに入ると、イベント ItemUpdating は発生しません。必要なテキスト値を適切に設定するには、DataBound イベントを使用する必要があります。

必要に応じて、DetailsView の CurrentMode プロパティを使用して、編集中か表示中かを確認できます。

結果は次のようになります。

protected void DetailsView1_DataBound(object sender, EventArgs e)
{
    Label l = DetailsView1.FindControl("FirstName") as Label;
    if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
    {
        //obtained from your sample
        MemberProfile memberp = MemberProfile.GetuserProfile(data);
        MembershipUser myuser = Membership.GetUser()

        l.Text = memberp.fName;
    }
    else
    { 
        l.Text = "Another text or nothing";
    }
 }

Detailsview1 コントロールで DataBound イベントを必ず定義してください。

REMARK : データ バインド モードによって影響を受ける可能性があります。もしそうなら、私に知らせて、例を挙げてください。

于 2013-01-23T10:17:15.353 に答える
0

RowUpdatingおよびRowEditingイベントをグリッドビューに追加します。

http://www.aspdotnet-suresh.com/2011/02/how-to-inserteditupdate-and-delete-data.html

于 2013-01-14T19:08:19.437 に答える