0

私はしばらくformviewを使用していませんが、これはObjectDataSourceを使用しないという点で普通ではなく、CRUD操作にBLLクラスを使用していました。更新されません。誰かがこれを見て、明白なことを指摘できますか?

実際、update_Clickメソッドは起動しません。また、更新イベントを追加しようとしましたが、それも発火しました。

<asp:FormView ID="fvContactDetails_Mod" runat="server" DataKeyNames="memberid" EnableViewState="false"
  OnDataBound="fvContactDetails_Mod_OnDataBound" >
  <EditItemTemplate>                        
     <table>
        <tr>
          <td class="formlabel"><label for="fname">First Name:</label></td>
          <td class="formvalue">
             <asp:TextBox runat="server" ID="txtFname" CssClass="txtfield" text='<%# Bind("firstname") %>' />
             <asp:RequiredFieldValidator ControlToValidate="txtFname" ErrorMessage="First Name is required." ID="RequiredFieldValidator3" runat="server" ToolTip="First Name is required."   ValidationGroup="CreateUserForm">*</asp:RequiredFieldValidator>
          </td>
        </tr>
        <tr>
          <td class="formlabel"><label for="lname">Last Name:</label></td>
          <td class="formvalue">
             <asp:TextBox runat="server" ID="txtLname" CssClass="txtfield"  text='<%# Bind("lastname") %>'/>
             <asp:RequiredFieldValidator ControlToValidate="txtLname" ErrorMessage="Last Name is required." ID="RequiredFieldValidator4" runat="server" ToolTip="Last Name is required." ValidationGroup="CreateUserForm">*</asp:RequiredFieldValidator>
          </td>
        </tr>
        <tr>
          <td>
            <p><Club:RolloverButton ID="update" runat="server" Text="Update Registration" OnClick="update_Click" /></p>
          </td>
         </tr>
       </table>
     </EditItemTemplate>
   </asp:FormView

protected void update_Click(object sender, FormViewUpdateEventArgs e)
{
    MembershipUser user = Membership.GetUser();

    try
    {
        TextBox  txtFname = (TextBox)fvContactDetails_Mod.FindControl("txtFname");
        TextBox  txtLname = (TextBox)fvContactDetails_Mod.FindControl("txtLname");
        DropDownList  ddlRankid = (DropDownList)fvContactDetails_Mod.FindControl("ddlRankid");


        MemberInformation update = new MemberInformation();
        if (update.UpdateMemberInfo((Guid)user.ProviderUserKey,
            txtFname.Text,
            txtLname.Text,))
        {

        ContactStatus.Text = "Details have been updated sucessfully.";
        ContactStatus.ControlStyle.ForeColor = Color.Blue;
        }
    }
    catch (Exception ex)
    {
        ContactStatus.Text = "Error updating contact details: " + ex.Message;
        ContactStatus.ControlStyle.ForeColor = Color.Red;
    }
}
4

1 に答える 1

0

ViewState を無効にした場合 (明らかにそうしました)、Postback 上のまったく同じデータでデータ バインド コントロールを再バインドして、以前と同じ状態に再作成し、そのイベントが実際に発生できるようにする必要があります (この場合はupdate_Click)。

ここにデータバインディングコードが表示されていない場合、これは暗闇の中でのショットですが、Postback でコントロールを再バインドしたり、(わずかに) 異なるデータで再バインドしたりしないと思います。これにより、イベントが発生しなくなります。

ViewState を有効にするか、望まない場合は、ポストバックでデータ バインディングが正しく行われるようにします。それでも解決しない場合は、FormView をバインドするコードを提供してください。

于 2013-02-24T01:59:11.183 に答える