ASP.NET Zone

Die ASP.NET Community. Alle Antworten rund um Microsoft® Webtechnologien
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe | Impressum | ASP.NET Zone Suchplugin

Home Blogs Foren FAQ Communities Fotos Downloads
Werbeanzeige

Aktualisieren von Daten innerhalb eines TabContainers/Tabelle

  •  03-08-2012, 10:34

    Aktualisieren von Daten innerhalb eines TabContainers/Tabelle

    Guten Tag liebe Community

    Ich bin auf ein kleines Problem gestossen, was die Aktualisierung von Daten, welche in einer MS-SQL Datenbank gespeichert werden anbelangt.
    Folgender Aufbau:

    TabContainer (Ajax) mit 4 Tabs
    -> In jedem Tab ist jeweils eine mit C# erstellte Tabelle
        -> In dieser Tabelle pro Zelle jeweils ein DropDown oder eine TextBox, welche durch ein im Projekt vorhandenen Control gesteuert wird.

    Nun ist das Problem, dass bei dem letzten Tab eine Auflistung von Hotels mit den jeweiligen Gästen angezeigt wird
    -> Hotel 1             Gast 1        Von      Bis       Status
                                Gast 2        Von      Bis       Status
         Hotel 2 ...

    Wenn ich nun bei den Spalten "Von" oder "Bis" das Datum ändere, wird es beim ersten mal korrekt in die Datenbank gespeichert.
    Nun wird jedoch wieder die "Page_Load" Funktion aufgerufen und damit die eigentliche Zuweisung von GastID verschoben (Beispielsweise Gast 1 ist nun in Spalte 2, wird aber immer noch in Spalte 1 angezeigt) und die nächste Änderung eines der Daten wird nun beim falschen Gast abgespeichert.

    Code mit der Tabelle:
    <ajaxToolkit:TabContainer ID="tc_TripPlanningEdit" runat="server" AutoPostBack="true" UseVerticalStripPlacement="false" CssClass="MyTabStyle">       
            <ajaxToolkit:TabPanel ID="tb_Accommodation" runat="server" HeaderText="Accommodation" Enabled="true">
                <ContentTemplate>
                    <asp:Table ID="tbl_Accommodation" runat="server" CssClass="cssi_tbl_SourceData" />
                </ContentTemplate>
            </ajaxToolkit:TabPanel>
        </ajaxToolkit:TabContainer>

    protected void LoadTable()
    {
        // Header
        TableCell HotelNameHeaderCell = new TableCell();
        HotelNameHeaderCell.Text = "Hotel Name";
        HotelNameHeaderCell.CssClass = "css_bp_DataSource_HeaderColumn";
        HotelNameHeaderCell.RowSpan = 1;
     
        HeaderRow.Cells.Add(HotelNameHeaderCell);
        // Body
        TableCell NameEditCell = new TableCell();
        Controls.BranchTrip_EditTextBox NameEdit = new Controls.BranchTrip_EditTextBox();
        NameEdit = (Controls.BranchTrip_EditTextBox)this.LoadControl(TextBoxControl);
        NameEditCell.Controls.Add(NameEdit);
        NameEdit.LoadControl(BranchTripID, "Hotel", "Hotel_Name", HotelName, ParticipantID, HotelID);
        BodyRow.Cells.Add(NameEditCell);
    }


    Control:
    <asp:UpdatePanel ID="MyUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="true" runat="server">
        <ContentTemplate>
            </asp:TextBox ID="txt_Value" runat="server" Text="" EnableTheming="false" AutoPostBack="true"
                OnTextChanged="txt_Value_TextChanged" CssClass="css_BranchTripField_DataSource"
                ReadOnly="false">
        </ContentTemplate>
    </asp:UpdatePanel>

    if (TableName == "Hotel")
                    {
                        bt_Hotel Hotel = (from o in Context.bt_Hotel
                                          where o.ID == HotelID
                                          select o).FirstOrDefault();
                        if (RowName == "Hotel_Name")
                            Hotel.Name = NewValue;
                        else if (RowName == "Hotel_Address")
                            Hotel.Address = NewValue;
                        else if (RowName == "Hotel_Phone")
                            Hotel.PhoneNumber = NewValue;
                        bt_ParticipantHotel Guest = (from o in Context.bt_ParticipantHotel
                                                     where o.ID == HotelID
                                                     select o).FirstOrDefault();
                        DateTime FromTo = new DateTime();
                        Decimal Cost = new Decimal();
                        if (RowName == "Hotel_From")
                        {
                            if (DateTime.TryParse(NewValue, out FromTo))
                            {
                                txt_Value.BackColor = ColorTranslator.FromHtml("#ffffcc");
                                Guest.From = FromTo;
                            }
                            else if (NewValue == "")
                                Guest.From = null;
                            else
                                txt_Value.BackColor = Color.Red;
                        }
                        else if (RowName == "Hotel_To")
                        {
                            if (DateTime.TryParse(NewValue, out FromTo))
                            {
                                txt_Value.BackColor = ColorTranslator.FromHtml("#ffffcc");
                                Guest.To = FromTo;
                            }
                            else if (NewValue == "")
                                Guest.To = null;
                            else
                                txt_Value.BackColor = Color.Red;
                        }
                        else if (RowName == "Hotel_Cost")
                        {
                            if (Decimal.TryParse(NewValue, out Cost))
                            {
                                txt_Value.BackColor = ColorTranslator.FromHtml("#ffffcc");
                                Guest.CHF = Cost;
                            }
                            else if (NewValue == "")
                                Guest.CHF = null;
                            else
                                txt_Value.BackColor = Color.Red;
                        }
                    }


    Ich hoffe dieser Teil reicht. Die einfache Frage ist: Wie kann ich die Tabelle komplett aktualisieren? Das AutoPostBack will er nicht nehmen :S
    Bei Verständnisfragen stehe ich selbstverständlich zur Verfügung

    Freundliche Grüsse
    Cloud

    web-designs.ch
Das ganze Thema ansehen
Powered by Community Server (Commercial Edition)