使用BLL和DAL时,FormView不会更新

时间:2013-02-24 01:25:44

标签: c# asp.net

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

实际上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;
    }
}

1 个答案:

答案 0 :(得分:0)

如果禁用ViewState(你显然已经这样做了),你必须使用Postback上完全相同的数据重新绑定数据绑定控件,以便可以将它重新创建为与之前相同的状态,并且它的事件实际上可以触发(在你的情况下,update_Click)。

这里没有看到你的数据绑定代码,这只是黑暗中的一个镜头,但我想你不会重新修改你对Postback的控制或用(稍微)不同的数据重新绑定它,这会导致你的事件没有被触发。 / p>

启用ViewState,或者,如果您不想,请确保在Postback上正确发生数据绑定。如果这没有帮助,请提供绑定FormView的代码。