2013-12-17 4 views
0

Murach의 ASP.NET 4.5 웹 프로그래밍에서 C# 2012를 사용하여 작업하고 있습니다.ASP.NET 4.5 GridView 및 DetailsView

여기 내 질문입니다.

웹 페이지의 왼쪽에는 격자보기가 있고 오른쪽에는 상세보기가 있습니다.

내가 DetailViews에서 아마드에 아메드를 업데이트

,

업데이트가의 GridView에 반영되지 않습니다.

나는 다음 페이지로 이동 한 다음 업데이트를 표시하기 위해서는 다시 이전 페이지

에 와서해야합니다.

해결책이 있는지 궁금합니다.

도움 주셔서 감사합니다.

그런데 코드는 책에서 복사됩니다.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head id="Head1" runat="server"> 
    <title>Chapter 15: Customer Maintenance</title> 
    <link href="Main.css" rel="stylesheet" type="text/css" /> 
</head> 
<body> 
    <header> 
     <img src="Images/banner.jpg" "Halloween Store" /> 
    </header> 
    <section> 
    <form id="form1" runat="server"> 
     <div id="gridview"> 
      <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
       DataKeyNames="Email" DataSourceID="SqlDataSource1" 
       SelectedIndex="0" 
       AutoGenerateColumns="False" CellPadding="4" GridLines="None" 
       ForeColor="Black" Width="320px" > 
       <Columns> 
        <asp:BoundField DataField="Email" HeaderText="Email" 
         ReadOnly="True" Visible="False"> 
        </asp:BoundField> 
        <asp:BoundField DataField="LastName" HeaderText="LastName"> 
         <HeaderStyle HorizontalAlign="Left" /> 
         <ItemStyle Width="150px" /> 
        </asp:BoundField> 
        <asp:BoundField DataField="FirstName" HeaderText="FirstName"> 
         <HeaderStyle HorizontalAlign="Left" /> 
         <ItemStyle Width="120px" /> 
        </asp:BoundField> 
        <asp:CommandField ButtonType="Button" ShowSelectButton="True" /> 
       </Columns> 
       <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> 
       <RowStyle BackColor="White" ForeColor="Black" /> 
       <AlternatingRowStyle BackColor="#E3EAEB" ForeColor="Black" /> 
       <SelectedRowStyle BackColor="#F46D11" ForeColor="White" /> 
       <PagerSettings Mode="NextPreviousFirstLast" /> 
       <PagerStyle BackColor="#1C5E55" ForeColor="White" 
        HorizontalAlign="Center" /> 
      </asp:GridView> 

      <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:HalloweenConnectionString %>" 
       OldValuesParameterFormatString ="original_{0}" 

       ConflictDetection="CompareAllValues" 

       DeleteCommand="DELETE FROM [Customers] 
       WHERE [Email] = @original_Email 
       AND [LastName] = @original_LastName 
       AND [FirstName] = @original_FirstName 
       AND [Address] = @original_Address    
       AND [City] = @original_City    
       AND [State] = @original_State    
       AND [ZipCode] = @original_ZipCode    
       AND [PhoneNumber] = @original_PhoneNumber" 



InsertCommand="INSERT INTO [Customers] ([Email], [LastName], [FirstName], [Address], [City], [State], [ZipCode], [PhoneNumber]) 

       VALUES (@Email, @LastName, @FirstName, @Address, @City, @State, @ZipCode, @PhoneNumber)" 

SelectCommand="SELECT [Email], [LastName], [FirstName], [Address], [City], [State], [ZipCode], [PhoneNumber] 
       FROM [Customers] WHERE ([Email] = @Email)" 

UpdateCommand="UPDATE [Customers] SET [Email] = @Email, 
       [LastName] = @LastName, 
       [FirstName]= @FirstName, 
       [Address] = @Address, [City] = @City, [State] = @State, [ZipCode] = @ZipCode, 
       [PhoneNumber] = @PhoneNumber 
       WHERE [Email] = @original_Email 

       AND [LastName] = @original_LastName 

       AND [FirstName] = @original_FirstName 

       AND [Address] = @original_Address AND [City] = @original_City AND [State] = @original_State AND [ZipCode] = @original_ZipCode 

       AND [PhoneNumber] = @original_PhoneNumber"> 


<SelectParameters> 
<asp:ControlParameter ControlID="GridView1" Name="Email" PropertyName="SelectedValue" Type="String"/> 
</SelectParameters> 

<DeleteParameters> 
<asp:Parameter Name="original_Email" Type="String" /> 
<asp:Parameter Name="original_LastName" Type="String" /> 
<asp:Parameter Name="original_FirstName" Type="String" /> 
<asp:Parameter Name="original_Address" Type="String" /> 
<asp:Parameter Name="original_City" Type="String" /> 
<asp:Parameter Name="original_State" Type="String" /> 
<asp:Parameter Name="original_ZipCode" Type="String" /> 
<asp:Parameter Name="original_PhoneNumber" Type="String" /> 

</DeleteParameters> 
<UpdateParameters> 


<asp:Parameter Name="Email" Type="String" /> 
<asp:Parameter Name="LastName" Type="String" /> 
<asp:Parameter Name="FirstName" Type="String" /> 
<asp:Parameter Name="Address" Type="String" /> 
<asp:Parameter Name="City" Type="String" /> 
<asp:Parameter Name="State" Type="String" /> 
<asp:Parameter Name="ZipCode" Type="String" /> 
<asp:Parameter Name="PhoneNumber" Type="String" /> 

<asp:Parameter Name="original_Email" Type="String" /> 
<asp:Parameter Name="original_LastName" Type="String" /> 
<asp:Parameter Name="original_FirstName" Type="String" /> 
<asp:Parameter Name="original_Address" Type="String" /> 
<asp:Parameter Name="original_City" Type="String" /> 
<asp:Parameter Name="original_State" Type="String" /> 
<asp:Parameter Name="original_ZipCode" Type="String" /> 
<asp:Parameter Name="original_PhoneNumber" Type="String" /> 

</UpdateParameters> 


<InsertParameters> 

<asp:Parameter Name="Email" Type="String" /> 
<asp:Parameter Name="LastName" Type="String" /> 
<asp:Parameter Name="FirstName" Type="String" /> 

<asp:Parameter Name="Address" Type="String" /> 
<asp:Parameter Name="City" Type="String" /> 
<asp:Parameter Name="State" Type="String" /> 
<asp:Parameter Name="ZipCode" Type="String" /> 
<asp:Parameter Name="PhoneNumber" Type="String" /> 

</InsertParameters> 







       </asp:SqlDataSource> 
      <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
       ConnectionString="<%$ ConnectionStrings:HalloweenConnectionString %>" 
       SelectCommand="SELECT [Email], [LastName], [FirstName] 
           FROM [Customers] ORDER BY [LastName]"> 
      </asp:SqlDataSource> 
     </div> 
     <div id="detailsview"> 
      <asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="363px" AutoGenerateRows="False" DataKeyNames="Email" DataSourceID="SqlDataSource2" style="margin-left: 0px"> 
       <Fields> 

        <asp:TemplateField HeaderText="Email"> 

         <ItemTemplate> 

          <asp:Label ID="lblEmailIT" runat="server" Text='<%# Bind("Email") %>'> 

          </asp:Label> 

         </ItemTemplate> 

         <EditItemTemplate> 
          <asp:TextBox ID="lblEmailET" runat="server" Text='<%# Bind("Email") %>'> 
           </asp:TextBox> 

         </EditItemTemplate> 

         <InsertItemTemplate> 
          <asp:TextBox ID="txtEmailInT" runat="server" Text='<%# Bind("Email") %>'> 
          </asp:TextBox> 

          <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtEmailInT" ErrorMessage="Email is a required field."> 

          </asp:RequiredFieldValidator> 


         </InsertItemTemplate> 

         <HeaderStyle HorizontalAlign="Left" Width="100px" /> 
         <ItemStyle Width="200px" /> 

        </asp:TemplateField> 



        <asp:TemplateField HeaderText="LastName"> 

         <ItemTemplate> 

          <asp:Label ID="lblLastNameIT" runat="server" Text='<%# Bind("LastName") %>'> 

          </asp:Label> 

         </ItemTemplate> 

         <EditItemTemplate> 
          <asp:TextBox ID="lblLastNameET" runat="server" Text='<%# Bind("LastName") %>'> 
           </asp:TextBox> 

         </EditItemTemplate> 

         <InsertItemTemplate> 
          <asp:TextBox ID="lblLastNameInT" runat="server" Text='<%# Bind("LastName") %>'> 
          </asp:TextBox> 

         </InsertItemTemplate> 

         <HeaderStyle HorizontalAlign="Left" Width="100px" /> 
         <ItemStyle Width="200px" /> 

        </asp:TemplateField> 


        <asp:TemplateField HeaderText="FirstName"> 

         <ItemTemplate> 

          <asp:Label ID="lblFirstNameIT" runat="server" Text='<%# Bind("FirstName") %>'> 

          </asp:Label> 

         </ItemTemplate> 

         <EditItemTemplate> 
          <asp:TextBox ID="lblFirstNameET" runat="server" Text='<%# Bind("FirstName") %>'> 
           </asp:TextBox> 

         </EditItemTemplate> 

         <InsertItemTemplate> 
          <asp:TextBox ID="lblFirstNameInT" runat="server" Text='<%# Bind("FirstName") %>'> 
          </asp:TextBox> 

         </InsertItemTemplate> 

         <HeaderStyle HorizontalAlign="Left" Width="100px" /> 
         <ItemStyle Width="200px" /> 

        </asp:TemplateField> 


        <asp:TemplateField HeaderText="Address"> 

         <ItemTemplate> 

          <asp:Label ID="lblAddressIT" runat="server" Text='<%# Bind("Address") %>'> 

          </asp:Label> 

         </ItemTemplate> 

         <EditItemTemplate> 
          <asp:TextBox ID="lblAddressET" runat="server" Text='<%# Bind("Address") %>'> 
           </asp:TextBox> 

         </EditItemTemplate> 

         <InsertItemTemplate> 
          <asp:TextBox ID="lblAddressInT" runat="server" Text='<%# Bind("Address") %>'> 
          </asp:TextBox> 

         </InsertItemTemplate> 

         <HeaderStyle HorizontalAlign="Left" Width="100px" /> 
         <ItemStyle Width="200px" /> 

        </asp:TemplateField> 




        <asp:TemplateField HeaderText="City"> 

         <ItemTemplate> 

          <asp:Label ID="lblCityIT" runat="server" Text='<%# Bind("City") %>'> 

          </asp:Label> 

         </ItemTemplate> 

         <EditItemTemplate> 
          <asp:TextBox ID="lblCityET" runat="server" Text='<%# Bind("City") %>'> 
           </asp:TextBox> 

         </EditItemTemplate> 

         <InsertItemTemplate> 
          <asp:TextBox ID="lblCityInT" runat="server" Text='<%# Bind("City") %>'> 
          </asp:TextBox> 

         </InsertItemTemplate> 

         <HeaderStyle HorizontalAlign="Left" Width="100px" /> 
         <ItemStyle Width="200px" /> 

        </asp:TemplateField> 




        <asp:TemplateField HeaderText="State"> 

         <ItemTemplate> 

          <asp:Label ID="lblStateIT" runat="server" Text='<%# Bind("State") %>'> 

          </asp:Label> 

         </ItemTemplate> 

         <EditItemTemplate> 
          <asp:TextBox ID="lblStateET" runat="server" Text='<%# Bind("State") %>'> 
           </asp:TextBox> 

         </EditItemTemplate> 

         <InsertItemTemplate> 
          <asp:TextBox ID="lblStateInT" runat="server" Text='<%# Bind("State") %>'> 
          </asp:TextBox> 

         </InsertItemTemplate> 

         <HeaderStyle HorizontalAlign="Left" Width="100px" /> 
         <ItemStyle Width="200px" /> 

        </asp:TemplateField> 



        <asp:TemplateField HeaderText="ZipCode"> 

         <ItemTemplate> 

          <asp:Label ID="lblZipCodeIT" runat="server" Text='<%# Bind("ZipCode") %>'> 

          </asp:Label> 

         </ItemTemplate> 

         <EditItemTemplate> 
          <asp:TextBox ID="lblZipCodeET" runat="server" Text='<%# Bind("ZipCode") %>'> 
           </asp:TextBox> 

         </EditItemTemplate> 

         <InsertItemTemplate> 
          <asp:TextBox ID="lblZipCodeInT" runat="server" Text='<%# Bind("ZipCode") %>'> 
          </asp:TextBox> 

         </InsertItemTemplate> 

         <HeaderStyle HorizontalAlign="Left" Width="100px" /> 
         <ItemStyle Width="200px" /> 

        </asp:TemplateField> 


        <asp:TemplateField HeaderText="PhoneNumber"> 

         <ItemTemplate> 

          <asp:Label ID="lblPhoneNumberIT" runat="server" Text='<%# Bind("PhoneNumber") %>'> 

          </asp:Label> 

         </ItemTemplate> 

         <EditItemTemplate> 
          <asp:TextBox ID="lblPhoneNumberET" runat="server" Text='<%# Bind("PhoneNumber") %>'> 
           </asp:TextBox> 

         </EditItemTemplate> 

         <InsertItemTemplate> 
          <asp:TextBox ID="lblPhoneNumberInT" runat="server" Text='<%# Bind("PhoneNumber") %>'> 
          </asp:TextBox> 

         </InsertItemTemplate> 

         <HeaderStyle HorizontalAlign="Left" Width="100px" /> 
         <ItemStyle Width="200px" /> 

        </asp:TemplateField> 


        <asp:CommandField ButtonType="Button" ShowDeleteButton="true" ShowEditButton="true" ShowInsertButton="true" /> 

       </Fields> 
      </asp:DetailsView> 
      <asp:ValidationSummary ID="ValidationSummary1" runat="server" 
       HeaderText="Please correct the following errors:" CssClass="error" /> 
      <p> 
       <asp:Label ID = "lblError" runat="server" EnableViewState="False" CssClass="error"> 
       </asp:Label> 
      </p> 
     </div> 
    </form> 
    </section> 
</body> 
</html> 

답변

1

예, 귀하를 Page_Load 방법에 따라 코드 뒤에 당신은 당신이 GRIDVIEW을 바인딩 할 수 있습니다이 이벤트에이 이벤트를 사용하고 리디렉션해야

if(!Page.IsPostBack) 
{ 
    GridView1.DataBind(); 
} 
+1

설명은 GridView가 해당 데이터 소스로 이동하고 정보를 다시 쿼리하도록 지시합니다. 결과 정보는 GridView에 표시됩니다. Page_Load 메서드에서 수행하므로이 코드는 페이지가로드 될 때마다 처음 또는 다시 게시 될 때마다 실행됩니다. 하지만 비 포스트 백에서 실행할 필요가 없으므로 If 문을 사용해야합니다. – mason

0

삽입 같은 페이지 데이터가 될 것입니다 .... 문제는이 시도 도움이됩니다 GRIDVIEW 희망에 반영

보호 무효 DetailsView1_ItemUpdated (개체를 보낸 사람, DetailsViewUpdatedEventArgs 전자) { 경우 (e.AffectedRows == 1) { GridView1.DataBind(); Response.Redirect ("Yourpage.aspx"); } }

+0

작동 중입니다. 감사합니다, 아룬. 당신은 내 믿음을 회복합니다. – user3112275