0

我已经有一段时间没有使用 formview 了,这个并不普通,它不使用 ObjectDataSource,而是使用 BLL 类进行 CRUD 操作。它不更新。有人可以看看这个并指出显而易见的吗?

实际上 update_Click 方法永远不会触发。我也尝试过添加一个 onupdating 事件,但这也确实触发了。

<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 回答