Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 63

CAPÍTULO 4

Vinculación de datos
Objetivos
• Asociar una serie de controles a una
fuente de datos:
– RadioButtonList.
– DropDownList.
– ListBox.
Declaración de variables
Dim myConnection As SqlConnection
Dim myCommand As SqlDataAdapter
Dim ds As New DataSet
Dim ConnStr As String
Dim SQL As String
Conexión
Sub Page_Load(ByVal Source As Object, ByVal E
As EventArgs)
ConnStr = "Data Source=(local);Initial
Catalog=ASPNET;Integrated Security=True;"
myConnection = New
SqlConnection(ConnStr)
If Not (IsPostBack) Then
Bind()
End If
End Sub
Comando
Sub Bind()
'DataSetCommand
SQL = "select * from Groups"
myCommand = New SqlDataAdapter(SQL,
myConnection)
'utilice el método Fill de DataSetCommand
para completar un conjunto de datos
myCommand.Fill(ds, "Groups")
Enlace
list1.DataSource=ds.Tables("Groups").DefaultView
list1.DataBind()
rb.DataSource=ds.Tables("Groups").DefaultView
rb.DataBind()

dl.DataSource=ds.Tables("Groups").DefaultView
dl.DataBind()
End Sub
Presentar datos
Sub SubmitBtn_Click(sender As Object, e
As EventArgs)
Dim s as string
s = s + "----Selected DropDownList : " +
dl.SelectedItem.Text
Label1.Text = s

End Sub
Objetivo
• Asociar una fuente de datos a un control
DataRepeater.
• Un control DataRepeater tiene varias
plantillas:
– ItemTemplate.
– AlternatingItemTemplate.
– SeparatorTemplate.
– HeaderTemplate.
– FooterTemplate.
Conexion
• Dim myConnection As OleDbConnection
• Dim myCommand As OleDbDataAdapter
• Dim ds As New DataSet
• Dim ConnStr As String
• Dim SQL As String
• Sub Page_Load(Source As Object, E As EventArgs)
• ConnStr = "Data Source=(local);Initial
Catalog=ASPNET;Integrated Security=True"
• myConnection = New OleDbConnection(ConnStr)
• if NOT (isPostBack)
• rebind
• end if
• End Sub

Comando
• Sub ReBind()
• 'DataSetCommand
• SQL = "select * from Groups"
• myCommand = New
OleDbDataAdapter(SQL, myConnection)
• 'utilice el método Fill de DataSetCommand
para completar el conjunto de datos
• myCommand.Fill(ds, "Groups")

Vinculación
'Vinculación a una cuadrícula
DataGrid1.DataSource=ds.Tables _
("Groups").DefaultView
DataGrid1.DataBind()
End Sub
Objetivo
• Asociar una fuente de datos a un
DataGrid.
Imports
Imports System
Imports System.Collections
Imports System.Text
Imports System.Data
Imports System.Data.SqlClient
Imports System.Web.UI
Imports System.Web.UI.WebControls
Declaración de variables
Public Class BaseClass
Inherits System.Web.UI.Page
Protected Grid1 as DataGrid
Dim myConnection As SqlConnection
Dim myCommand As SqlDataAdapter
Dim ds As New DataSet
Dim ConnStr As String
Dim SQL As String
Conexión
Sub Page_Load(Source As Object, E As
EventArgs)
ConnStr = "Data Source=(local);Initial
Catalog=ASPNET;Integrated Security=True;"
myConnection = New SqlConnection(ConnStr)

if NOT (isPostBack)
rebind
end if
End Sub
Comando
Sub ReBind()
'DataSetCommand
SQL = "select m.*, g.code_display as category "
SQL = SQL + "from masters m, groups g "
SQL = SQL + " where m.code_category = g.code_value"
myCommand = New OleDbDataAdapter(SQL,
myConnection)
'utilice el método Fill del control DataSetCommand para
completar el
'conjunto de datos
myCommand.Fill(ds, "masters")
Enlace
'Vinculación a una cuadrícula

Grid1.DataSource=ds.Tables("masters").D
efaultView
Grid1.DataBind()
End Sub
Objetivo
• Formulario editable.
• Asociar una fuente de datos a un control
DataGrid que tenga posibilidades de
editar los datos contenidos.
Imports
Option Strict Off
Imports System
Imports System.Collections
Imports System.Text
Imports System.Data
Imports System.Data.SqlClient
Imports System.Web.UI
Imports System.Web.UI.WebControls
Código fuera de la página
Public Class BaseClass Declaración de
Inherits System.Web.UI.Page variables
protected Grid1 as DataGrid
Protected Message as label
Dim myConnection As SqlConnection
Dim myCommand As SqlDataAdapter
Dim ds As New DataSet
Dim ConnStr As String
Dim SQL As String
Load
Sub Page_Load(Source As Object, E As
EventArgs)
ConnStr = "Data Source=(local);Initial
Catalog=ASPNET;Integrated Security=True;"
myConnection = New
SqlConnection(ConnStr)
if NOT (isPostBack)
rebind
end if
End Sub
Rebind
Sub ReBind()
SQL = "select m.*, g.code_display as category "
SQL = SQL + "from masters m, groups g "
SQL = SQL + " where m.code_category = g.code_value"
myCommand = New SqlDataAdapter(SQL, myConnection)
'utilice el método Fill del DataSetCommand para completar el
'conjunto de datos
myCommand.Fill(ds, "masters")
'Vinculación a una cuadrícula
Grid1.DataSource=ds.Tables("masters").DefaultView
Grid1.DataBind()
End Sub
Grid1_Edit
Sub Grid1_Edit(Sender As Object, E As
DataGridCommandEventArgs)
Grid1.EditItemIndex =
E.Item.ItemIndex
ReBind()
End Sub
Grid1_Cancel
Sub Grid1_Cancel(Sender As Object, E As
DataGridCommandEventArgs)
Grid1.EditItemIndex = -1
ReBind()
End Sub
RunSql
Sub RunSql(sql as string)
'Éste es un marcador de posición para
la funcionalidad del código de Masters3.vb
response.write(sql)
End sub
Grid1_Update
Sub Grid1_Update(sender As Object, e As
Código dentro de la página
DataGridCommandEventArgs)
dim sql as string
Dim code_display As String
Dim code_category As String
Dim type As String
Dim opening As String
Dim closing As String
Dim myTextBox As TextBox
DataKey
'Este es el valor clave : Recuperado del DataKey, dado que se trata de
un campo de sólo lectura
Dim code_value as string =
Grid1.DataKeys.Item(E.Item.ItemIndex).ToString
myTextBox = E.Item.FindControl("edit_name")
code_display = mytextbox.text
myTextBox = E.Item.FindControl("edit_group")
code_category = mytextbox.text
myTextBox = E.Item.FindControl("edit_type")
type = mytextbox.text
myTextBox = E.Item.FindControl("edit_opening")
opening = mytextbox.text
myTextBox = E.Item.FindControl("edit_closing")
closing = mytextbox.text
Proced. Almac.
'Ahora ejecute el procedimiento almacenado
sql = "Execute p_masters " + code_value + ", '"
+ code_display + " ',"
sql = sql + code_category + ", '" + type +"' ," +
opening + "," + closing
RunSql(sql)
Grid1.EditItemIndex = -1
ReBind()
End Sub
Objetivos
• Características del DataGrid
– Paginación.
– Sorting.
Imports
Imports System
Imports System.Collections
Imports System.Text
Imports System.Data
Imports System.Data.OleDb
Imports System.Web.UI
Imports System.Web.UI.WebControls
Declaración de variables
Public Class BaseClass
Inherits System.Web.UI.Page
Protected Grid1 as DataGrid
Dim myConnection As SqlConnection
Dim myCommand As SqlDataAdapter
Dim ds As New DataSet
Dim ConnStr As String
Dim SQL As String
Public SortField As String
Load
Sub Page_Load(Source As Object, E As EventArgs)
ConnStr = "Data Source=(local);Initial
Catalog=ASPNET;Integrated Security=True;"
myConnection = New SqlConnection(ConnStr)
if NOT (isPostBack)
If SortField = "" Then
SortField = "code_display"
End If
rebind
end if
End Sub
Rebind
Sub ReBind()
'DataSetCommand
SQL = "select m.*, g.code_display as category "
SQL = SQL + "from masters m, groups g "
SQL = SQL + " where m.code_category = g.code_value"
myCommand = New OleDbDataAdapter(SQL, myConnection)
'utilice el método Fill de DataSetCommand para completar el conjunto de datos
myCommand.Fill(ds, "masters")

'Ordene los registros por sortField


Dim dv2 as DataView
dv2 = ds.Tables("masters").DefaultView
dv2.Sort = SortField
Grid1.DataSource= dv2
Grid1.DataBind()

End Sub
Paginación
Sub MyDataGrid_Page(sender As Object, e
As DataGridPageChangedEventArgs)
Grid1.CurrentPageIndex =
e.NewPageIndex
ReBind
End Sub
Sort
Sub MyDataGrid_Sort(sender As Object, e
As DataGridSortCommandEventArgs)
SortField = e.SortExpression
ReBind
End Sub
Objetivos
• Establecer la diferencia entre el DataGrid
y el DataList:
– RepeatDirection.
– RepeatColumns.
DataList_Update
Sub DataList_UpdateCommand(sender As Object, e As
DataListCommandEventArgs)
dim sql as string
Dim code_display As String
Dim type As String
Dim myTextBox As TextBox
myTextBox = E.Item.FindControl("edit_display")
code_display = mytextbox.text
myTextBox = E.Item.FindControl("edit_type")
type = mytextbox.text
'Ahora ejecute el procedimiento
response.write("Execute some procedure @name=" + code_display
+ "@type=" + type)
End Sub
Imports
Option Strict Off
Imports System
Imports System.Collections
Imports System.Text
Imports System.Data
Imports System.Data.SqlClient
Imports System.Web.UI
Imports System.Web.UI.WebControls
Load
Sub Page_Load(ByVal Source As Object, ByVal E
As EventArgs)
ConnStr = "Data Source=(local);Initial
Catalog=ASPNET;Integrated Security=True;"
myConnection = New
SqlConnection(ConnStr)
If Not (IsPostBack) Then
ReBind()
End If
End Sub
ReBind
Sub ReBind()
'DataSetCommand
SQL = "select * from Groups"
myCommand = New SqlDataAdapter(SQL,
myConnection)
'utilece el método Fill de DataSetCommand para
completar el cojunto de datos
myCommand.Fill(ds, "Groups")
'Vinculación a una cuadrícula
Grid1.DataSource = ds.Tables("Groups").DefaultView
Grid1.DataBind()
End Sub
DataList_EditCommand
Sub DataList_EditCommand(ByVal sender
As Object, ByVal e As
DataListCommandEventArgs)
Grid1.EditItemIndex = e.Item.ItemIndex
ReBind()
End Sub
DataList_CancelCommand
Sub DataList_CancelCommand(ByVal
sender As Object, ByVal e As
DataListCommandEventArgs)
Grid1.EditItemIndex = -1
ReBind()
End Sub
Objetivos
• Vincular un control de lista a un orígen de datos
XML.
• Utilizar el método FileStream, para abrir el
archivo XML (more.xml), en modo “lectura”.
• Se completa StreamReader con el contenido.
• Utilizar el método ReadXML, del DataSet, para
leer los datos XML en el DataSet.
• Vncular un elemento (“article”), del archivo XML,
a un DataGrid.
More.xml …
<moreovernews>
<article id="_11052107">
<url>http://c.moreover.com/click/here.pl?x11052105</url>
<headline_text>Heavy rains flood southern
Brazil</headline_text>
<source>MSNBC</source>
<media_type>text</media_type>
<cluster>Brazil news</cluster>
<tagline> </tagline>

<document_url>http://www.msnbc.com/news/contents.asp</docume
nt_url>
<harvest_time>Oct 15 2000 2:38AM</harvest_time>
<access_registration> </access_registration>
<access_status> </access_status>
</article>
More.xml …
<article id="_11050007">
<url>http://c.moreover.com/click/here.pl?x11050005</url>
<headline_text>Heavy rains kill six in southern
Brazil</headline_text>
<source>AP via New Jersey Online</source>
<media_type>text</media_type>
<cluster>Brazil news</cluster>
<tagline> </tagline>

<document_url>http://www.nj.com/newsflash/index.ssf?/pages/news
flash-international.html</document_url>
<harvest_time>Oct 14 2000 9:27PM</harvest_time>
<access_registration> </access_registration>
<access_status> </access_status>
</article>
More.xml
<article id="_11035043">
<url>http://c.moreover.com/click/here.pl?x11035032</url>
<headline_text>Brazil shares end at 4-1/2 month low on oil
jitters</headline_text>
<source>Individual.com via Oil News</source>
<media_type>text</media_type>
<cluster>Brazil news</cluster>
<tagline> </tagline>
<document_url>http://www.oilnews.com/</document_url>
<harvest_time>Oct 14 2000 6:39AM</harvest_time>
<access_registration> </access_registration>
<access_status> </access_status>
</article>
</moreovernews>
Load
Sub Page_Load(Source As Object, E As EventArgs)
Dim ds As New DataSet
Dim fs As filestream
dim xmLStream As StreamReader
fs = New filestream(Server.MapPath("more.xml"),
FileMode.Open, FileAccess.Read)
xmlStream = new StreamReader(fs)
ds.ReadXML(XmlStream)
DataGrid1.DataSource=ds.Tables("article").DefaultView
DataGrid1.DataBind()
End Su
Objetivo
• Implementar una relación principal –
detalle:
– Authors, Titles y TitleAuthor.
Imports
Imports System
Imports System.Collections
Imports System.Text
Imports System.Data
Imports System.Data.SqlClient
Imports System.Web.UI
Imports System.Web.UI.WebControls
Declaración de varaiables
Public Class BaseClass
Inherits System.Web.UI.Page
Protected AuthorsGrid as DataGrid
protected titlesGrid as DataGrid
protected detailsPanel as Panel
Public currentAuthor as object
Dim myConnection As SqlConnection
Dim myCommand As SqlDataAdapter
Dim ds As New DataSet
Dim ConnStr As String
Dim SQL As String
Conexión
Sub Page_Load(Source As Object, E As
EventArgs)
ConnStr = "Data Source=(local);Initial
Catalog=ASPNET;Integrated Security=True;"
myConnection = New
OleDbConnection(ConnStr)
if NOT (isPostBack)
rebind
end if
End Sub
Llenar el dataset
Sub FillDs
sql = " select * , au_lname + ',' + au_fname as au_name"
sql = sql + " From authors a, titles t, titleauthor ta"
sql = sql + " Where a.au_id = ta.au_id AND t.title_id =
ta.title_id"
myCommand = New OleDbDataAdapter(SQL, myConnection)
'utilice el método Fill del control DataSetCommand para
completar el
'conjunto de datos

myCommand.Fill(ds, "Authors")
end Sub
Enlace de datos
Sub ReBind()
FillDs
'Vinculación a una cuadrícula

AuthorsGrid.DataSource=ds.Tables("Auth
ors").DefaultView
AuthorsGrid.DataBind()
End Sub
Grid_Select
Sub Grid_Select(sender as Object , e as
EventArgs)
Dim vIndex As Integer
Dim vkey as string
vIndex = AuthorsGrid.SelectedIndex
vkey
=AuthorsGrid.DataKeys(vIndex).ToString
UpdateSelection(vkey)
end sub
UpdateSelect
Sub UpdateSelection(vkey as string)
Dim myConnection2 As OleDbConnection
Dim myCommand2 As OleDbDataAdapter
Dim ds2 As New DataSet
Dim ConnStr2 As String
Dim SQL2 As String
Dim itemcount As Integer
sql2 = " select * , au_lname + ',' + au_fname as au_name"
sql2 = sql2 + " From authors a, titles t, titleauthor ta"
sql2 = sql2 + " Where a.au_id = ta.au_id AND t.title_id = ta.title_id"
sql2 = sql2 + " AND a.au_id = '" + vkey + "'"
myCommand2 = New OleDbDataAdapter(SQL2, myConnection)
myCommand2.Fill(ds2, "Authors")
'Vincule la cuadrícula
titlesGrid.DataSource=ds2.Tables("Authors").DefaultView
titlesGrid.DataBind()
itemcount = titlesGrid.Items.Count
if itemcount >= 1 then
detailsPanel.Visible = true
Else
detailsPanel.Visible = false
response.write("No rows found")
end if
End sub
End Class

You might also like