Hallo Andr��e, hallo Alex,

das mit dem Code hatte ich schon bef�rchtet - ich hoffe, ich habe alles einigerma�en 
zusammen bekommen:

                private void Page_Load(object sender, System.EventArgs e)
                {
                        // Hier Benutzercode zur Seiteninitialisierung einf�gen

                        // Disable caching in browser
                        Response.Expires = -1;
                        Response.ExpiresAbsolute = DateTime.Now.AddHours(-1);
                        Response.AddHeader("cache-control", "private");
                        Response.AddHeader("pragma", "no-cache");

                        // datagrid vars
                        if(ViewState["CurrentPageIndex"] != null)
                                dg.CurrentPageIndex = (int) 
ViewState["CurrentPageIndex"];

                        // First loading
                        if(!Page.IsPostBack)
                        {

                                // At first we have to search
                                lblHeader.Text = "Suchen";
                                lblMessage.Text = "Bitte geben Sie die Zeichenfolge 
ein, nach der gesucht werden soll:";
                                SetDdlShowBy();
                                SetMenu("search");
                                SetLabelText();
                                SetButtonText();
                                SetDdlLAPRefId();
                                SetDdlParentId();

                                pnlRow.Visible = false;
                        }
                        
                        if(Session["DataSet"] != null)
                        {
                                dataSet11 = (DM.LAP.Manage.DataSet1) 
Session["DataSet"];

                                // Create the datagrid (always, because it's not in 
viewstate)
                                CheckNextStep();
                                //SetDataGrid();
                                //BindDataGrid();
                        }


                private void SetDataGrid()
                {
                        // Array to set the columns
                        //      0 = Name in header
                        //      1 = Name of column in dataset
                        string[,] arr   = new string[3,2];
                        arr[0,0] = "Az.";
                        arr[0,1] = "Id";
                        arr[1,0] = "Bezeichnung";
                        arr[1,1] = "Name";
                        arr[2,0] = "Beschreibung";
                        arr[2,1] = "Description";

                        
                        // Create DataGrid
                        dg.EnableViewState = false;
                        dg.AutoGenerateColumns = false;
                        dg.AllowPaging = true;
                        dg.PageSize = pageSize;
                        dg.AllowSorting = true;
                        dg.DataKeyField = "Oid";
                        
                        // Make the boundcolumns
                        BoundColumn col;
                        for(int i=0; i < (arr.GetLength(0)); i++)
                        {
                                col = new BoundColumn();
                                col.HeaderText = arr[i,0];
                                col.DataField = arr[i,1];
                                col.SortExpression = col.DataField;
                                dg.Columns.Add(col);
                        }

                        // Add Administrationcolumns
                        TemplateColumn tplCol;
                        //      Add ShowColumn
                        tplCol = new TemplateColumn();
                        tplCol.ItemTemplate = 
this.LoadTemplate(Request.ApplicationPath + "/usercontrol/show.ascx");
                        dg.Columns.Add(tplCol);
                                //      Add EditColumn
                                tplCol = new TemplateColumn();
                                tplCol.ItemTemplate = 
this.LoadTemplate(Request.ApplicationPath + "/usercontrol/edit.ascx");
                                dg.Columns.Add(tplCol);
                                //      Add DeleteColumn
                                tplCol = new TemplateColumn();
                                tplCol.ItemTemplate = 
this.LoadTemplate(Request.ApplicationPath + "/usercontrol/delete.ascx");
                                dg.Columns.Add(tplCol);

                        //Style DataGrid
                        dg.HorizontalAlign = HorizontalAlign.Center;
                        dg.CellPadding = 5;
                        dg.GridLines = GridLines.Both;
                        dg.HeaderStyle.BackColor = Color.Gray;
                        dg.HeaderStyle.ForeColor = Color.White;
                        dg.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
                        dg.AlternatingItemStyle.BackColor = Color.WhiteSmoke;
                }

                private void BindDataGrid()
                {
                        DataView dv = new DataView();
                        dv.Table = dataSet11.Tables[tableName];
                        if(ViewState["SortExpression"] != null)
                                dv.Sort = ViewState["SortExpression"].ToString();
                        else
                                dv.Sort = "Id";
                        if(dv.Table.Rows.Count <= pageSize)
                                dg.AllowPaging = false;
                        dg.DataSource = dv;
                        dg.DataBind();
                }


                private void CheckNextStep()
                {
                        // How many rows are there?
                        
                        if(dataSet11.Tables[tableName].Rows.Count < 1) // No Row
                        {
                                lblMessage.Text = "Es ist noch kein Datensatz 
vorhanden. Bitte erfassen Sie jetzt einen neuen.";
                                DoNew();
                        }

                        if(dataSet11.Tables[tableName].Rows.Count == 1) // Only one row
                        {
                                Session[rowOid] = (Guid) 
dataSet11.Tables[tableName].Rows[0]["oid"];
                                DoShow();
                        }

                        if(dataSet11.Tables[tableName].Rows.Count > 1) // More than 
one row
                        {
                                DoList();
                        }
                }
                
                private void DoList()
                {
                        lblHeader.Text = objectName + " auflisten";
                        lblMessage.Text = "Es sind " + 
dataSet11.Tables[tableName].Rows.Count + " Datens�tze vorhanden.";
                        SetDataGrid();
                        BindDataGrid();
                        pnlList.Visible = true;
                        pnlRow.Visible = !pnlList.Visible;
                        SetMenu("list");
                }

                private void DoShow()
                {
                        // Fill Header
                        lblHeader.Text = objectName + " zeigen";
                        lblMessage.Text = "";

                        // Fill Textfields
                        SetTextBoxText(true);

                        // Controls  visible
                        SetControlsVisibleByMode("show");
                        SetButtonUnvisible();
                        pnlList.Visible = false;
                        pnlRow.Visible = !pnlList.Visible;
                        SetMenu("detail");
                }
                

                private void btnSearch_Click(object sender, System.EventArgs e)
                {
                        if(txtSearch.Text.Trim() != string.Empty)
                        {
                                // Set Search-String
                                string search = "%" + txtSearch.Text.Trim() + "%";
                                cmdCountBySearch.Parameters["@Search"].Value = search;
                                
                                // Set Owner
                                string owner = string.Empty;
                                switch (ddlShowBy.SelectedValue)
                                {
                                        case "all":
                                                owner = "27608%";
                                                break;
                                        case "orglap":
                                                owner = Session["OrgId"].ToString();
                                                break;
                                                        case "lap":
                                                owner = "27608";
                                                break;
                                }
                                cmdCountBySearch.Parameters["@Owner"].Value = owner;

                                sqlConnection1.Open();
                                object result = cmdCountBySearch.ExecuteScalar();
                                sqlConnection1.Close();

                                int num = 0;
                                if(result != null)
                                        num = (int) result;

                                if(num > 0)
                                {                               
                                        sqlSelectCommand1.Parameters["@Search"].Value 
= search;
                                        sqlSelectCommand1.Parameters["@Owner"].Value = 
owner;

                                        dataSet11.Tables[tableName].Clear();
                                        sqlDataAdapter1.Fill(dataSet11,tableName);
                                        // Save the DataSet
                                        Session["DataSet"] = dataSet11;
                                        
                                        CheckNextStep();
                                }
                                else
                                {
                                        lblMessage.Text = "Mit dem Suchkriterium " + 
txtSearch.Text.Trim() + " konnte kein Datensatz gefunden werden!"; 
                                        if(pnlList.Visible == true)
                                                pnlList.Visible = false;
                                }
                        }
                        else
                                Server.Transfer(Request.RawUrl);
                }


@Andre: Wenn ich das DataGrid (weil nicht in ViewState) nicht neu erzeuge, werden die 
Funktionen der Klicks nicht ausgef�hrt.

Henri

[EMAIL PROTECTED] schrieb am 28.04.04 08:59:29:
> 
> Das DataGrid musst du nie neu erzeugen.
> Du  musst bei einer suche nur deine DataView anpassen und diese als DataSource 
> deinem DataGrid zuordnen. Danach noch DataBind aufrufen und das DataGrid enth�lt die 
> neuen Daten.
> 
> Andr�
> 
> -----Urspr�ngliche Nachricht-----
> Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von "Henri L�bel" 
> Gesendet: Mittwoch, 28. April 2004 08:55
> An: [EMAIL PROTECTED]
> Betreff: [Asp.net] Doppelte Ausgabe Datagrid vermeiden
> 
> Hallo,
> 
> in einer aspx-Seite habe ich einen Suchbutton.
> 
> Wenn die Suche zu einer Ergebnismenge f�hrt, zeige ich dieses in einem Datagrid an. 
> Jede Zeile des Datagrid enth�lt eine Schaltfl�che, um die Daten im Einzelsatz 
> anzuzeigen.
> 
> Das DataGrid beruht auf einer DataView. Diese DataView h�ngt von der Suche ab.
> 
> Jetzt passiert es, dass nach Anzeigen des DataGrid und einer erneuten Suche das 
> DataGrid doppelt angezeigt wird, beides mit dem gleichen Inhalt.
> 
> Im PageLoad wird das DataGrid erstellt, da es nicht im ViewState ist und ich ggf. 
> auf das Klicken auf den Detailbutton reagieren muss.
> 
> Das DataGrid wird aber ebenfalls beim Klick auf den Suchen-Button erzeugt.
> 
> Hier ist meines Erachtens der Ansatz zu suchen. Allerdings wei� ich nicht, worauf 
> ich reagieren soll. Beim Klicken auf den Suchbutton muss das Datagrid ja erzeugt und 
> gef�llt werden. Bevor ich das Ereignis "Klick auf Detailbutton" ausl�se, muss ich 
> das Datagrid ja ebenfalls haben, damit ich wei�, zu welchem Datensatz die Details 
> angezeigt werden sollen. Anschlie�end k�nnte ich eigentlich das DataGrid zerst�ren - 
> aber eine Dispose f�hrt ja leider nicht (zum gew�nschten Zeitpunkt) dazu.
> 
> Ist vielleicht irgendwas in meiner Logik faul?
> 
> Henri 
> _____________________________________________________________________
> Der WEB.DE Virenschutz schuetzt Ihr Postfach vor dem Wurm Netsky.A-P!
> Kostenfrei fuer alle FreeMail Nutzer. http://f.web.de/?mc=021157
> 
> *************************
> _______________________________________________
> This ASP.NET email is sponsored by:
> UDEX ProMenu.Net  - Die Software f�r Navigation - Jetzt kostenlos testen!
> Tree- Style, Horizontal- Slide, Vertical- Slide. http://www.udexnet.com
> 
> _______________________________________________
> Asp.net Mailingliste, Postings senden an:
> [EMAIL PROTECTED]
> An-/Abmeldung und Suchfunktion unter:
> http://www.glengamoi.com/mailman/listinfo/asp.net
> *************************
> *************************
> _______________________________________________
> This ASP.NET email is sponsored by:
> UDEX ProMenu.Net  - Die Software f�r Navigation - Jetzt kostenlos testen!
> Tree- Style, Horizontal- Slide, Vertical- Slide. http://www.udexnet.com
> 
> _______________________________________________
> Asp.net Mailingliste, Postings senden an:
> [EMAIL PROTECTED]
> An-/Abmeldung und Suchfunktion unter:
> http://www.glengamoi.com/mailman/listinfo/asp.net
> *************************


_____________________________________________________________________
Der WEB.DE Virenschutz schuetzt Ihr Postfach vor dem Wurm Netsky.A-P!
Kostenfrei fuer alle FreeMail Nutzer. http://f.web.de/?mc=021157

*************************
_______________________________________________
This ASP.NET email is sponsored by:
UDEX ProMenu.Net  - Die Software f�r Navigation - Jetzt kostenlos testen!
Tree- Style, Horizontal- Slide, Vertical- Slide. http://www.udexnet.com

_______________________________________________
Asp.net Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/asp.net
*************************

Antwort per Email an