Modalpopup中的DetailsView不会在第二次单击编辑按钮时加载

时间:2013-09-18 14:38:21

标签: asp.net gridview ajaxcontroltoolkit detailsview modalpopup

我有一个GridView,当您单击编辑按钮时,它会在ModalPopup内的编辑模式下加载DetailsView。第一次单击编辑时,它工作正常。如果再次单击“编辑”以更改第二条记录,则会加载,但DetailsView不在ModalPopup中。

有谁能告诉我我做错了什么?我的代码在下面。

GridView数据源:

 <asp:SqlDataSource ID="sdsMembers" runat="server" 
    ConnectionString="<%$ ConnectionStrings:DoseRec_ABTConnectionString %>"

    SelectCommand="SELECT [intMemberID], [vcharTitle], [vcharFirstName], [vcharLastName], [vcharSuffix], [vcharJobTitle], [vcharAddress1], [vcharAddress2], [vcharCity], [vcharState], [vcharZipCode], [vcharPhone], [vcharFax], [bitActive] FROM [tbl_Members]" 
    DeleteCommand="DELETE FROM [tbl_Members] WHERE [intMemberID] = @intMemberID" 
    InsertCommand="INSERT INTO [tbl_Members] ([vcharTitle], [vcharFirstName], [vcharLastName], [vcharSuffix], [vcharJobTitle], [vcharAddress1], [vcharAddress2], [vcharCity], [vcharState], [vcharZipCode], [vcharPhone], [vcharFax], [bitActive]) VALUES (@vcharTitle, @vcharFirstName, @vcharLastName, @vcharSuffix, @vcharJobTitle, @vcharAddress1, @vcharAddress2, @vcharCity, @vcharState, @vcharZipCode, @vcharPhone, @vcharFax, @bitActive)" 
    UpdateCommand="UPDATE [tbl_Members] SET [vcharTitle] = @vcharTitle, [vcharFirstName] = @vcharFirstName, [vcharLastName] = @vcharLastName, [vcharSuffix] = @vcharSuffix, [vcharJobTitle] = @vcharJobTitle, [vcharAddress1] = @vcharAddress1, [vcharAddress2] = @vcharAddress2, [vcharCity] = @vcharCity, [vcharState] = @vcharState, [vcharZipCode] = @vcharZipCode, [vcharPhone] = @vcharPhone, [vcharFax] = @vcharFax, [bitActive] = @bitActive WHERE [intMemberID] = @intMemberID">
    <DeleteParameters>
        <asp:Parameter Name="intMemberID" Type="Int32" />
    </DeleteParameters>
    <InsertParameters>
        <asp:Parameter Name="vcharTitle" Type="String" />
        <asp:Parameter Name="vcharFirstName" Type="String" />
        <asp:Parameter Name="vcharLastName" Type="String" />
        <asp:Parameter Name="vcharSuffix" Type="String" />
        <asp:Parameter Name="vcharJobTitle" Type="String" />
        <asp:Parameter Name="vcharAddress1" Type="String" />
        <asp:Parameter Name="vcharAddress2" Type="String" />
        <asp:Parameter Name="vcharCity" Type="String" />
        <asp:Parameter Name="vcharState" Type="String" />
        <asp:Parameter Name="vcharZipCode" Type="String" />
        <asp:Parameter Name="vcharPhone" Type="String" />
        <asp:Parameter Name="vcharFax" Type="String" />
        <asp:Parameter Name="bitActive" Type="Boolean" />
    </InsertParameters>
    <UpdateParameters>
        <asp:Parameter Name="vcharTitle" Type="String" />
        <asp:Parameter Name="vcharFirstName" Type="String" />
        <asp:Parameter Name="vcharLastName" Type="String" />
        <asp:Parameter Name="vcharSuffix" Type="String" />
        <asp:Parameter Name="vcharJobTitle" Type="String" />
        <asp:Parameter Name="vcharAddress1" Type="String" />
        <asp:Parameter Name="vcharAddress2" Type="String" />
        <asp:Parameter Name="vcharCity" Type="String" />
        <asp:Parameter Name="vcharState" Type="String" />
        <asp:Parameter Name="vcharZipCode" Type="String" />
        <asp:Parameter Name="vcharPhone" Type="String" />
        <asp:Parameter Name="vcharFax" Type="String" />
        <asp:Parameter Name="bitActive" Type="Boolean" />
        <asp:Parameter Name="intMemberID" Type="Int32" />
    </UpdateParameters>
</asp:SqlDataSource> 

DetailsView数据源:

    <asp:SqlDataSource ID="sdsMembersDetail" runat="server" 
        ConnectionString="<%$ ConnectionStrings:DoseRec_ABTConnectionString %>"

        SelectCommand="SELECT [intMemberID] AS ID, [vcharTitle] AS Title, [vcharFirstName] AS 'First Name', [vcharLastName] AS 'Last Name', [vcharSuffix] AS Suffix, [vcharJobTitle] AS 'Job Title', [vcharAddress1] AS Address1, [vcharAddress2] AS Address2, [vcharCity] AS City, [vcharState] AS State, [vcharZipCode] AS 'Zip Code', [vcharPhone] AS Phone, [vcharFax] AS Fax, [bitActive] AS Active FROM [tbl_Members] WHERE ([intMemberID] = @intMemberID)">
        <SelectParameters>
            <asp:QueryStringParameter DefaultValue="" Name="intMemberID" 
                QueryStringField="intMemberID" Type="Int32" />
        </SelectParameters>
    </asp:SqlDataSource>

GridView标记:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>          
        <asp:GridView ID="gvMembers" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="intMemberID" DataSourceID="sdsMembers" style="background-color:White;">
            <Columns>
                <asp:CommandField ShowDeleteButton="True" />
                 <asp:TemplateField ControlStyle-Width="50px" HeaderStyle-Width="60px">
                            <ItemTemplate>                                    
                                <asp:LinkButton ID="btnViewDetails" runat="server" OnClick="BtnViewDetails_Click">Edit</asp:LinkButton>
                            </ItemTemplate>
                        </asp:TemplateField>
                <asp:BoundField DataField="intMemberID" HeaderText="ID" 
                    InsertVisible="False" ReadOnly="True" SortExpression="intMemberID" />
                <asp:BoundField DataField="vcharTitle" HeaderText="vcharTitle" 
                    SortExpression="vcharTitle" />
                <asp:BoundField DataField="vcharFirstName" HeaderText="First Name" 
                    SortExpression="vcharFirstName" />
                <asp:BoundField DataField="vcharLastName" HeaderText="Last Name" 
                    SortExpression="vcharLastName" />
                <asp:BoundField DataField="vcharSuffix" HeaderText="Suffix" 
                    SortExpression="vcharSuffix" />
                <asp:BoundField DataField="vcharJobTitle" HeaderText="Job Title" 
                    SortExpression="vcharJobTitle" />
                <asp:BoundField DataField="vcharAddress1" HeaderText="Address1" 
                    SortExpression="vcharAddress1" />
                <asp:BoundField DataField="vcharAddress2" HeaderText="Address2" 
                    SortExpression="vcharAddress2" />
                <asp:BoundField DataField="vcharCity" HeaderText="City" 
                    SortExpression="vcharCity" />
                <asp:BoundField DataField="vcharState" HeaderText="State" 
                    SortExpression="vcharState" />
                <asp:BoundField DataField="vcharZipCode" HeaderText="Zip Code" 
                    SortExpression="vcharZipCode" />
                <asp:BoundField DataField="vcharPhone" HeaderText="Phone" 
                    SortExpression="vcharPhone" />
                <asp:BoundField DataField="vcharFax" HeaderText="Fax" 
                    SortExpression="vcharFax" />
                <asp:CheckBoxField DataField="bitActive" HeaderText="Active" 
                    SortExpression="bitActive" />
            </Columns>
        </asp:GridView>  
    </ContentTemplate>
    </asp:UpdatePanel>

DetailsView marup:

    <asp:Button id="btnShowPopup" runat="server" style="display:none" />
     <ajaxToolKit:ModalPopupExtender 
            ID="mdlPopup" runat="server" TargetControlID="btnShowPopup" PopupControlID="pnlPopup" 
            CancelControlID="btnClose" BackgroundCssClass="modalBackground" />
        <asp:Panel ID="pnlPopup" runat="server" Width="500px" style="display:none">
            <asp:UpdatePanel ID="updPnlCustomerDetail" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <asp:Label ID="lblMemberDetail" runat="server" Text="Member Detail" BackColor="lightblue" Width="95%" />
                    <asp:DetailsView ID="dvMemberDetail" runat="server" DefaultMode="Edit" Width="95%" BackColor="white" OnItemUpdating="dvMembersDetail_ItemUpdating">                        
                    </asp:DetailsView>
                </ContentTemplate>                
            </asp:UpdatePanel>
            <div align="right" style="width:95%">
                <asp:LinkButton 
                    ID="btnSave" runat="server" Text="Save"                         
                    Width="50px" onclick="btnSave_Click" />
                 <asp:LinkButton ID="btnClose" runat="server">Close</asp:LinkButton>
            </div>                     
        </asp:Panel>

点击事件(显示DetailsView):

   protected void BtnViewDetails_Click(object sender, EventArgs e)
    {
        LinkButton btnDetails = sender as LinkButton;
        GridViewRow row = (GridViewRow)btnDetails.NamingContainer;
        this.sdsMembersDetail.SelectParameters.Clear();
        this.sdsMembersDetail.SelectParameters.Add("intMemberID", Convert.ToString(this.gvMembers.DataKeys[row.RowIndex].Value));
        this.dvMemberDetail.DataSource = this.sdsMembersDetail;
        this.dvMemberDetail.DataBind();
        this.updPnlCustomerDetail.Update();
        this.mdlPopup.Show();
    }

如果需要任何其他代码,例如我的保存按钮的代码,请告诉我,我会发布。

这是我的保存代码:

protected void btnSave_Click(object sender, EventArgs e)
    {
        if (this.Page.IsValid)
        {
            this.dvMemberDetail.UpdateItem(true);
            this.dvMemberDetail.ChangeMode(DetailsViewMode.ReadOnly);
            this.dvMemberDetail.Visible = false;

            this.mdlPopup.Hide();

            this.gvMembers.DataBind();
            this.UpdatePanel1.Update();

        }
    }

    protected void dvMembersDetail_ItemUpdating(object sender, EventArgs e)
    {
        using (DoseRec_ABTEntities1 dbContext = new DoseRec_ABTEntities1())
        {

            TextBox id = (TextBox)dvMemberDetail.Rows[0].Cells[1].Controls[0];
            int intID = Convert.ToInt32(id.Text);

            tbl_Members mem = (from m in dbContext.tbl_Members
                               where m.intMemberID == intID
                               select m).Single();                

            TextBox title = (TextBox)dvMemberDetail.Rows[1].Cells[1].Controls[0];
            TextBox firstname = (TextBox)dvMemberDetail.Rows[2].Cells[1].Controls[0];
            TextBox lastname = (TextBox)dvMemberDetail.Rows[3].Cells[1].Controls[0];
            TextBox suffix = (TextBox)dvMemberDetail.Rows[4].Cells[1].Controls[0];
            TextBox jobtitle = (TextBox)dvMemberDetail.Rows[5].Cells[1].Controls[0];
            TextBox address1 = (TextBox)dvMemberDetail.Rows[6].Cells[1].Controls[0];
            TextBox address2 = (TextBox)dvMemberDetail.Rows[7].Cells[1].Controls[0];
            TextBox city = (TextBox)dvMemberDetail.Rows[8].Cells[1].Controls[0];
            TextBox state = (TextBox)dvMemberDetail.Rows[9].Cells[1].Controls[0];
            TextBox zipcode = (TextBox)dvMemberDetail.Rows[10].Cells[1].Controls[0];
            TextBox phone = (TextBox)dvMemberDetail.Rows[11].Cells[1].Controls[0];
            TextBox fax = (TextBox)dvMemberDetail.Rows[12].Cells[1].Controls[0];
            CheckBox active = (CheckBox)dvMemberDetail.Rows[13].Cells[1].Controls[0];


            mem.vcharTitle = title.Text;
            mem.vcharFirstName = firstname.Text;
            mem.vcharLastName = lastname.Text;
            mem.vcharSuffix = suffix.Text;
            mem.vcharJobTitle = jobtitle.Text;
            mem.vcharAddress1 = address1.Text;
            mem.vcharAddress2 = address2.Text;
            mem.vcharCity = city.Text;
            mem.vcharState = state.Text;
            mem.vcharZipCode = zipcode.Text;
            mem.vcharPhone = phone.Text;
            mem.vcharFax = fax.Text;
            mem.bitActive = active.Checked;


            dbContext.SaveChanges();

        }            
    } 

0 个答案:

没有答案