asp EntityDataSource detailsview OnItemUpdating e.cancel

时间:2011-12-15 10:30:53

标签: asp.net

我会解释我的问题。 所以我有一个带有2个entityDataSource的asp页面。 - 第一个用于填写我的obout表:

<asp:EntityDataSource ID="EntityDataSource1" ContextTypeName="RichDataBusinessApplication.Web.RichDataEntities" EnableFlattening="false" EnableInsert="true" 
    EnableUpdate="true" EnableDelete="true" EntitySetName="UserInformations" runat="server" />

我的obout表位于更新面板中。当我想在表格中编辑一行时,处理此方法:

protected void Button_Command(object sender, CommandEventArgs e)
{
  SelectedUserHiddenField.Value = e.CommandArgument.ToString();
  UsersCustomerDetailsView.ChangeMode(DetailsViewMode.Edit);
  OpenPopupDialog(String.Format("#{0}", UpdatePopupPanel.ClientID));
}

OpenPopupDialog函数打开一个jquery弹出对话框,其中包含我现在可以编辑的用户信息:

    <asp:Panel ID="UpdatePopupPanel" runat="server" CssClass="popup-dialog">
        <asp:UpdatePanel runat="server" ID="UpdatePanel1" UpdateMode="Conditional">
               <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="UsersGrid" EventName="Select" />
               </Triggers>
               <ContentTemplate>
                    <asp:DetailsView runat="server" ID="UsersCustomerDetailsView" DataSourceID="SelectedUserDataSource2" DefaultMode="Edit" AutoGenerateEditButton="true" AutoGenerateRows="false"
OnItemUpdating="UserDetailsView_ItemUpdating" OnItemUpdated="UserDetailsView_ItemUpdated"
OnItemCommand="UserDetailsView_ItemCommand"
DataKeyNames="UserId" Width="100%">
                        <Fields>
                              <asp:TemplateField>
                                     <HeaderTemplate>
                                             <uc:CulturalLabel ID="CulturalLabel1" runat="server" Text="Lastname" />
                                     </HeaderTemplate>                     
                                     <EditItemTemplate>
                                           <asp:TextBox ID="LNameTextBox" runat="server" Text='<%# Bind("Lastname") %>' CssClass="textEntry" ValidationGroup="CoordonneValidationGroupUp"/>
                                           <asp:RequiredFieldValidator ID="CustomRequieredValidator2" runat="server" ControlToValidate="LNameTextBox" CssClass="failureNotification" ErrorMessage="test" ValidationGroup="CoordonneValidationGroupUp">*</asp:RequiredFieldValidator>
                                     </EditItemTemplate>
                              </asp:TemplateField>
                         </Fields>
                   </asp:DetailsView>
            </ContentTemplate>
     </asp:UpdatePanel>
</asp:Panel>

第二个EntityDataSource允许填写我的详细信息视图弹出窗口的字段是这样的:

    <asp:EntityDataSource ID="SelectedUserDataSource2" ContextTypeName="RichDataBusinessApplication.Web.RichDataEntities" EnableFlattening="false" EnableInsert="true" EnableUpdate="true" EnableDelete="true" EntitySetName="UserInformations" runat="server" AutoGenerateWhereClause="True">
      <WhereParameters>
            <asp:ControlParameter Name="UserId" ControlID="SelectedUserHiddenField" DbType="Guid" PropertyName="value" />
      </WhereParameters>
</asp:EntityDataSource>

当我点击弹出窗口的更新按钮时,我处理了我的详细信息视图的“OnItemUpdating”:

    protected void UserDetailsView_ItemUpdating(Object sender, DetailsViewUpdateEventArgs e){
     Page.Validate("CoordonneValidationGroupUp");
     if (Page.IsValid)
     {
       //code to execute if page is valid
     }
     else
     {
       e.cancel = true;
     }
}

问题如下: 当我的页面由于姓氏为空而无效时,执行“e.cancel = true”但不显示“*”和错误消息,并且我的弹出窗口的字段重新加载了第一行的数据我的数据库。

所以,如果有人可以帮助我!

谢谢!

0 个答案:

没有答案