我有一段时间没有使用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;
}
}
答案 0 :(得分:0)
如果禁用ViewState(你显然已经这样做了),你必须使用Postback上完全相同的数据重新绑定数据绑定控件,以便可以将它重新创建为与之前相同的状态,并且它的事件实际上可以触发(在你的情况下,update_Click)。
这里没有看到你的数据绑定代码,这只是黑暗中的一个镜头,但我想你不会重新修改你对Postback的控制或用(稍微)不同的数据重新绑定它,这会导致你的事件没有被触发。 / p>
启用ViewState,或者,如果您不想,请确保在Postback上正确发生数据绑定。如果这没有帮助,请提供绑定FormView的代码。