آشنایی با Data Binding در Net.

data binding یکی از روش های مهم برای اتصال به بانک اطلاعات می باشد که کنترل های موجود در NET. می توان از این روش به بانک اطلاعاتی متصل نمایم .در ادامه با جزئیات این روش بیشتر آشنا میشویم

آشنایی با Data Binding در Net.

Data binding یک متد در NET. میباشد که کنترلهای Interface را به بانک اطلاعاتی متصل می کند .بسیاری از سیستمهای مدیریت بانک اطلاتی (DBMS) دسترسی غیر مستقیم به بانک اطلاعاتی دارند. این مشکل برای نحوه آدرس دهی کنترل ها به بانک اطلاعاتی میباشند .

توسعه دهندگان وب برای اتصال به بانک اطلاعاتی از کنترل های سمت سرور استفاده می کنند .

 
مزایای اتصال به بانک در NET. :
1 - حجم کد نویسی را کاهش میدهد
2 - کارایی بهتر نرم افزار
3 - توسعه سریع و اطلاعات محور نرم افزار
4 - خصوصی سازی نحوه اتصال به بانک
5 - رویدادهای مناسب اتصال به بانک اطلاعات برای کنترل های مختلف
6 - بازخورد بصری و اعتبارسنجی بر اساس قوانینی که میتوانیم تعریف کنیم
 
در ادامه یک کنترل GridView در صفحه قرار میدهیم :


    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="BasicGridView" %>  
      
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">  
      
    <html xmlns="http://www.w3.org/1999/xhtml" >  
    <head runat="server">  
        <title>Untitled Page</title>  
    </head>  
    <body>  
        <form id="form1" runat="server">  
        <div>  
            <asp:GridView ID="GridView1" runat="server">  
            </asp:GridView>  
          
        </div>  
        </form>  
    </body>  
    </html>  

در قسمت دستورت این کنترل را به بانک اطلاعاتی متصل می کنیم


    using System;  
    using System.Data;  
    using System.Configuration;  
    using System.Collections;  
    using System.Web;  
    using System.Web.Security;  
    using System.Web.UI;  
    using System.Web.UI.WebControls;  
    using System.Web.UI.WebControls.WebParts;  
    using System.Web.UI.HtmlControls;  
    using System.Web.Configuration;  
    using System.Data.SqlClient;  
      
    public partial class BasicGridView : System.Web.UI.Page  
    {  
        protected void Page_Load(object sender, EventArgs e)  
        {  
            if (!this.IsPostBack)  
            {  
                string connectionString = WebConfigurationManager.ConnectionStrings["Northwind"].ConnectionString;  
                string selectSQL = "SELECT ProductID, ProductName, UnitPrice FROM Products";  
                SqlConnection con = new SqlConnection(connectionString);  
                SqlCommand cmd = new SqlCommand(selectSQL, con);  
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);  
                DataSet ds = new DataSet();  
      
                adapter.Fill(ds, "Products");  
      
                GridView1.DataSource = ds;  
                GridView1.DataBind();  
            }  
        }  
    }  

همچنین برای اتصال به بانک اطلاعاتی در web.config تگ مخصوص اتصال را می نویسیم (connection String)


    <?Xml version="1.0"?>  
    <Configuration>  
      <ConnectionStrings>  
        <Add name="Northwind" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=SSPI"/>  
      </connectionStrings>  
    </configuration>  

استفاده از BindManager دو راه آسان برای اتصال به بانک را در اختیار ما می گذارد :

1 - کامپوننت binding manager را به teelbox اضافه میکنیم

2 - کامپوننت Binding Manager به web form اضافه می کنیم

3 - استفاده از قسمت Desig برای اتصال به بانک

4 - هنگامی که می خواهیم برنامه را اجرا کنیم , برای اتصال به بانک , متد BindtoWebForm فراخوانی میشود

5 - برای دریافت اطلاعات از web form , شما باید متد bindFromwebForm را فرا خوانی کنید


    protected void UpdateDataBindings()   
    {  
      // create a new collection to store the new bindings found  
      DataBindingInfoCollection newBindings = new DataBindingInfoCollection();  
      
      // gets all web controls from the form  
      IReferenceService service = (IReferenceService)GetService(  
        typeof(IReferenceService));  
      object[] references = service.GetReferences(typeof(Control));  
      
      foreach(Control control in references){  
        // if the control isn't in the page but it's a naming container, skip it  
        if ((control.NamingContainer == null) ||   
           (control.NamingContainer.GetType() != typeof(Page))) continue;  
          
        // get the interface related to data binding  
        IDataBindingsAccessor dba = (IDataBindingsAccessor)control;  
      
        if (dba.HasDataBindings){  
          foreach (DataBinding db in dba.DataBindings){  
            // get the binding information for the control  
            DataBindingInfo dbi = GetBindingInformation(db, control);  
      
            // if the entry isn't new, set the old values  
            UpdateDataBindingInfo(dbi, bindingManager.DataBindings);  
      
            newBindings.Add(dbi);  
          }  
        }  
      }  
      
      // if the data bindings have changed  
      if (CheckBindingChanges(bindingManager.DataBindings, newBindings)){  
        // notify that the component is going to change  
        RaiseComponentChanging(null);  
      
        // update the bindings  
        bindingManager.DataBindings.Clear();  
        foreach(DataBindingInfo dbi in newBindings){  
          bindingManager.DataBindings.Add(dbi);  
        }  
      
        // notify that the component has changed  
        RaiseComponentChanged(null, null, null);  
      }  
    }