GridView und Filterung

Razorhawk

Webdesigner und MSP
Hi ich habe hier zwei unterschiedliche Versionen eine Programmcodes und würde gerne wissen welcher eleganter bzw. sauberer ist und vielleicht auch warum ihr denkt, dass der gewählte besser.

Beide Lösungen funktionieren. Eine verwendet in eine Session gespeicherte Daten und die andere nutzt die Daten in dem GridView um zu filtern.

Der folgende ist das PageLoad (nur um den ganzen Code zu verstehen)
Code:
        protected void Page_Load(object sender, EventArgs e)
        {
            DataSet objDS = new DataSet();

            string conString = "Data Source=MeinPC\\SQLEXPRESS;Initial Catalog=Datenbank;Integrated Security=True";
            string queryString ="SELECT Id,Product, Description FROM dbo.Products;";
            SqlConnection sqlCon = new SqlConnection(conString);

            SqlCommand objCmd = new SqlCommand(queryString,sqlCon);
            SqlDataAdapter objDA = new SqlDataAdapter(objCmd);
            objDA.Fill(objDS);
            gridCities.DataSource = objDS;
            gridCities.DataBind();
            Session["ds"] = objDS;
        }

So welche Lösung ist jetzt besser?

Lösung 1
Code:
   protected void btnSearch_Click(object sender, EventArgs e)
        {
            DataSet ds = Session["ds"] as DataSet;
            DataView dv = ds.Tables[0].DefaultView;
            dv.RowFilter = "Product LIKE '" + txtSearch.Text + "%'";
            gridCities.DataSource = dv;
            gridCities.DataBind();
        }

oder

Lösung 2

Code:
   protected void btnSearch_Click(object sender, EventArgs e)
        {
            DataSet ds = gridCities.DataSource as DataSet;
            DataView dv = ds.Tables[0].DefaultView;
            dv.RowFilter = "Product LIKE '" + txtSearch.Text + "%'";
            gridCities.DataSource = dv;
            gridCities.DataBind();
        }

Grüße
 
Hallo Sebastian,

ich persönlich würde die zweite Lösung verwenden. Dies zum Beispiel deshalb weil man sich mit zwei geöffneten Fenstern der gleichen Seite gegenseitig die Sessionobjekte überschreiben kann.

Generell würde ich die Session nur für Objekte verwenden welche übergreifend für die gesamte Webseite zur Verfügung stehen sollen. Falls es einmal nicht über in .NET zu Verfügung stehende Mittel lösbar ist so würde ich immer noch lieber mit versteckten Feldern im Postback arbeiten als mit der Session. Habe da auch so meine Erfahrung gemacht :)

Gruss
Resu
 

Neue Beiträge

Zurück