Avatar billede tuvix Nybegynder
18. april 2006 - 19:59 Der er 5 kommentarer

Databinding til object

Er der nogle der har nogle eksempler på, hvordan man laver databinding til et object i en windows form.

Det jeg leder efter er nogle eksempler på hvordan mit object (class) skal laves, hvilket metoder skal der være. Jeg har brug for at kunne både hente og gemme data fra en datakilde ved hjælp af mit object. Jeg har fundet noget på følgende side, men der står ikke noget om hvordan man gemmer data, kun hvordan man henter data:

http://msdn.microsoft.com/vstudio/tour/vs2005_guided_tour/VS2005pro/Smart_Client/DisplayBusObjectData.htm
Avatar billede dr_chaos Nybegynder
19. april 2006 - 08:05 #1
du skal bare bruge:
public Class class1
{
public string test;
public int id;
public class1()
{
}
public int ID
{
get{return this.id;}
set{this.id = value;}
}

public string Test
{
get{return this.test;}
set{this.test = value;}
}


}
Avatar billede dr_chaos Nybegynder
19. april 2006 - 08:09 #2
du har alle de metoder der skal være i filen som du henviser til:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Text;

namespace DisplayingDataBusinessObject
{
    class Product
    {
        // Property variables     
        private int productId;
        private string name;
        private string productNumber;
        private decimal standardCost;
        private string color;
        private decimal listPrice;
        private string categoryName;
        private string subcategoryName;
        private Int32 categoryId;            // CategoryID is a SQL int
        private Int16 subcategoryId;        // SubcategoryID, curiously, is a SQL smallint

        // Property accessors
        public int ProductId
        {
            get { return productId; }
            set { productId = value; }
        }

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public string ProductNumber
        {
            get { return productNumber; }
            set { productNumber = value; }
        }

        public decimal StandardCost
        {
            get { return standardCost; }
            set { standardCost = value; }
        }

        public string Color
        {
            get { return color; }
            set { color = value; }
        }

        public decimal ListPrice
        {
            get { return listPrice; }
            set { listPrice = value; }
        }

        public string Category
        {
            get { return categoryName; }
            set { categoryName = value; }
        }

        public string Subcategory
        {
            get { return subcategoryName; }
            set { subcategoryName = value; }
        }

        public Int32 CategoryId
        {
            get { return categoryId; }
            set { categoryId = value; }
        }

        public Int16 SubcategoryId
        {
            get { return subcategoryId; }
            set { subcategoryId = value; }
        }

        public Product()
        {
            // Provide default values
            productId = 0;
            name = "Enter product name.";
            productNumber = "Enter product number.";
            standardCost = 0.00M;
            color = String.Empty;
            listPrice = 0.00M;
            categoryId = -1;
            categoryName = "";
            subcategoryId = -1;
            subcategoryName = "";
        }

        public Product(DataRow productData)
        {
            productId = (int)productData["ProductID"];
            name = (string)productData["Name"];
            productNumber= (string)productData["ProductNumber"];
            standardCost = (decimal)productData["StandardCost"];
            // Color is a nullable field.
            color = productData["Color"] == DBNull.Value ? "" : (string)productData["Color"];
            listPrice = (decimal)productData["ListPrice"];
            categoryName = (string)productData["CategoryName"];
            subcategoryName = (string)productData["SubcategoryName"];
            categoryId = (Int32)productData["CategoryID"];
            subcategoryId = (Int16)productData["SubcategoryID"];
        }

        public bool Save()
        {
            throw new ApplicationException("Product.Save() method is not implemented.");

        }

        public static System.Collections.Generic.List<Product> LoadProducts(DataTable productsData)
        {
            System.Collections.Generic.List<Product> products = new List<Product>();
            for (int i = 0; i < productsData.Rows.Count; i++)
            {
                DataRow productData = productsData.Rows[i];
                Product product = new Product(productData);
                products.Add(product);
            }

            return products;
        }

        public static System.Collections.Generic.List<Product> LoadProducts()
        {
            DataSet productDataSet = LoadDBData();
            return LoadProducts(productDataSet.Tables["Product"]);
        }

        private static DataSet LoadDBData()
        {
            try
            {
                // Retrieve AdventureWorks Product data into a DataSet
                // Build a connnection string to the database
                SqlConnectionStringBuilder connectStringBuilder = new SqlConnectionStringBuilder();
                connectStringBuilder.DataSource = @".\SQLEXPRESS";
                connectStringBuilder.IntegratedSecurity = true;
                connectStringBuilder.AttachDBFilename = @"C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf";

                // Prepare a DataSet to receive the data
                DataSet ds = new DataSet();

                // Open connection to the AdventureWorks database
                using (SqlConnection connection = new SqlConnection(connectStringBuilder.ConnectionString))
                {
                    connection.Open();

                    // Retrieve Product data
                    // Join to ProductSubcategory and ProductCategory
                    // to retrieve Product categorization.
                    // Uncategorized products will be excluded.
                    SqlCommand command = new SqlCommand(
                        "SELECT "
                                + "  Product.*"
                                + ", Subcategory.ProductSubcategoryID AS SubcategoryID, Subcategory.Name AS SubcategoryName"
                                + ", Category.ProductCategoryID AS CategoryID, Category.Name AS CategoryName"
                                + " FROM [Production].[Product] AS Product"
                                + " INNER JOIN [Production].[ProductSubcategory] AS Subcategory ON (Subcategory.ProductSubcategoryID = Product.ProductSubcategoryID)"
                                + " INNER JOIN [Production].[ProductCategory] AS Category ON (Category.ProductCategoryID = Subcategory.ProductCategoryID)",
                        connection);

                    using (SqlDataReader dataReaderProducts = command.ExecuteReader())
                    {

                        // Load the data into the DataSet
                        ds.Load(
                            dataReaderProducts,
                            LoadOption.OverwriteChanges,
                            new string[] { "Product" });
                    }

                    // Close the connection to the database
                    connection.Close();
                }

                return ds;
            }
            catch (SqlException err)
            {
                // The error would typically be logged and otherwise handled here,
                // and a business object custom error would be raised.
                // For the purposes of this example, simply bubble the error.
                throw err;
            }


        }


    }
}
Avatar billede tuvix Nybegynder
19. april 2006 - 12:34 #3
Jeg har været ved at se på den klasse, men jeg kan ikke rigtig finde ud hvordan jeg får binded objektet til f.eks. et textfield i min form. Hvordan får jeg hentet værdien ind i feltet og hvordan får jeg gemt den igen ved hjælp af objektet, hvis jeg ta'r udgangspunkt i ovenstående objekt?
Avatar billede dr_chaos Nybegynder
19. april 2006 - 12:36 #4
Du skal adde en projektdatasource til din form.
under databindings på tekstboksen kan du så vælge det felt som skal styres af en bestemt property
Avatar billede tuvix Nybegynder
31. maj 2006 - 21:14 #5
Beklager den lange svartid, men jeg har ikke haft tid til at se på det her den sidste måneds tid.

Jeg har nu fået bindet et felt til datasource og kan hente værdien ud fra min database. Jeg har dog stadig problemer med at få indsat noget i databasen ved hjælp at datasourcen. I ovenstående eks. er der en Save metoden, som ikke er implementeret, hvordan bruger jeg den via databinding?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester