Announcement

Collapse
No announcement yet.

GridView und Postback

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • GridView und Postback

    Hallo Leute,


    ich habe eine Aspx Seite erstellt und stelle einige Werte aus einer Datenbank in einem GridView dar.
    Wenn ich einige Werte direkt im GriedView ändere und auf Aktualisieren klicke, dann ist mein GridView nach dem Postback leer. (Zumindest im Debug-Modus, aber visuell sind die Werte noch da?) Ich komme einfach programmtechnisch nicht an die geänderten Werte ran.

    Code:
     protected void Page_Load(object sender, EventArgs e)
            {
    
                if (!IsPostBack)
                {
                     nc = new System.Net.NetworkCredential();
                    nc.Domain = "cdom";
                    nc.UserName = "user1"; //login.userName;
                    nc.Password = "passwd1"; //login.userpasswd;
    
                    myCustomer.Credentials = nc;
                    myCustomers = myCustomer.ReadMultiple(null, null, 0);
                    GridView1.DataSource = myCustomers;
                    
                    GridView1.DataBind();
    
                     }
                            
            }
    
    
    protected void Update_Button_Click1(object sender, EventArgs e)
            {
                myCustomers = (CustomerPage.Customer[])GridView1.DataSource;
                myCustomer.UpdateMultiple(ref myCustomers);
                GridView1.EditIndex = -1;
                GridView1.DataSource = myCustomers;
                GridView1.DataBind();
                        }

    Nun die Frage: Wie schaffe ich vorher die geänderten Werte entweder sofort auf die Datenbank zu schreiben oder erstmal zwischenzuspeichern, damit ich nachdem Postback diese Daten an die Datenbank weiterleiten kann?

    - Dabei ist wichtig, welche Eigenschaften mein GridView haben sollte
    - Mit Viewstate soll es angeblich funktionieren, leider weiß ich nicht wie ich es verwenden soll

    Danke im Voraus
    Zuletzt editiert von aydina81; 11.01.2011, 18:26.

  • #2
    Du führst:

    Code:
    GridView1.DataSource = myCustomers;
                    
    GridView1.DataBind();
    nur während des ersten Seitenaufrufs aus (!IsPostBack). Prinzipiell sollte es funktionieren wenn Du das ganze AUSSERHALB des IF-Konstrukts vornimmst Dann musst Du natürlich die Daten neu abfragen. Das liegt daran dass eine Website im Endeffekt zustandslos aus ist.

    Comment


    • #3
      Zeige deine ASPX-Code (GridView)
      Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

      Comment


      • #4
        Hallo Leute,

        danke für die schnellen Antworten.

        Die Richtung, dass es zustandslos ist hört sich schon mal gut an. Aber wie kriege ich die aktuell geänderten Daten (also den letzten GridView Zustand vor dem Postback). Wenn ich Debugge ist mein GridView immer "null".
        Wenn ich die Datenanbindung nach der If-Anweisung tätige, dann holt er sich nur die Daten aus der Datenbank wieder (sind wieder die gleichen Daten vor der Änderung).


        Ich habe das ganze mit einem zweiten "static" GridView versucht, nur da bleiben die Werte zwar immer drin, nur kann ich diese nicht anzeigen lassen (um es zu editieren), weil die Location Eigenschaft fehlt? ich Kann es nicht programmtechnisch platzieren.



        Hier ist der Code fürs GridView

        Code:
              
            <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <asp:Button ID="Update_Button" runat="server" onclick="Update_Button_Click1" 
                        onclientclick="return OnClick" Text="Update" />
                    <br />
                    <br />
                    <asp:GridView ID="GridView1" runat="server" AllowSorting="True" 
                        AutoGenerateColumns="False" CellPadding="4" DataKeyNames="Key" 
                        ForeColor="#333333" GridLines="None" 
                        OnRowCancelingEdit="GridView1_RowCancelingEdit" 
                        onrowcommand="GridView1_RowCommand" 
                        onrowdeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" 
                        OnRowUpdating="GridView1_RowUpdating" ShowFooter="True" 
                        EnableViewState="True">
                        <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                        <Columns>
                            <asp:CommandField HeaderText="Edit-Update" ShowEditButton="True" />
                            <asp:BoundField DataField="Name" HeaderText="Name" />                    
                            <asp:TemplateField HeaderText="Adresse" SortExpression="Address">
                                <ItemTemplate>
                                        <%--<asp:Label ID="DescriptionLabel" runat="server" Text='<%# Eval("Address") %>'></asp:Label>--%>
                                        <asp:TextBox ID="Description" runat="server" Text='<%# Eval("Address") %>'  Width="175px" Visible="true"></asp:TextBox>
                                        <%--<asp:RequiredFieldValidator ID="DescriptionValidator" runat="server" ControlToValidate="Description" Visible="false"
                                            ErrorMessage="Please enter a Task Description!" Text="*" Display="Dynamic" CssClass="message" />--%>
                                    </ItemTemplate>
                            </asp:TemplateField>
                            <asp:CommandField HeaderText="Delete" ShowDeleteButton="True" />
                        </Columns>
                        <RowStyle BackColor="#E3EAEB" />
                        <EditRowStyle BackColor="#7C6F57" />
                        <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
                        <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
                        <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                        <AlternatingRowStyle BackColor="White" />
                    </asp:GridView>
                    <br />
                </ContentTemplate>
            </asp:UpdatePanel>
        Zuletzt editiert von aydina81; 12.01.2011, 10:28.

        Comment

        Working...
        X