hola,
alguien podria decirme que significa la siguiente linea de codigo C#?
((DateTime)date).ToShortDateString();
y como escribir lo mismo per en VB.Net?
muchas gracias.
| |||
databinding en tiempo de ejecucion hola, alguien podria decirme que significa la siguiente linea de codigo C#? ((DateTime)date).ToShortDateString(); y como escribir lo mismo per en VB.Net? muchas gracias. |
| |||
DataBinding Gracias xknown. mira, mi problema es en realidad el siguiente, tengo una pagina en la que presento un DataGrid, y una de sus columnas es un template: 00: <ItemTemplate> 01: <a class="lnkSml" href='pagina.aspx?p=<%# databinder.eval(container.Dataitem, "FullName")%>'> Vinculo_1 </a> 03: </ItemTemplate> cree un control web compuesto, con la misma funcion que la pagina mencionada, el cual contien entre otros objetos un DataGrid, pero al intentar crear la columna template, no se como vincularle el Container.DataItem, la linea 04 me marca un error:'DataItem' no es miembro de 'System.Web.UI.Control' (Parte del codigo de la clase que implementa ITemplate para crear la columna Template) 00: Public Sub InstantiateIn(ByVal Container As Control) Implements System.Web.UI.ITemplate.InstantiateIn 01: Dim lc As New Literal 02: 04: lc.Text = "<a href='pagina.aspx?p=" & DataBinder.Eval(Container.dataitem, columnName) & "'> Vinculo_1 </a>" 05: 06: Container.Controls.Add(lc) 07: 08: End Sub Me gustaria saber como puedo a traves de codigo realizar ese Binding. muchas gracias. |
| |||
xknown, Esta es la clase que intento crar para la generacion del TemplateColumn, funciona perfectamente, el problema viene cuando intento usar el Container.DataItem para vincular la columna con un campo de su datasource Public Class ColumnTemplate Implements ITemplate Dim templateType As ListItemType Dim columnName As String 'Constructor Public Sub New(ByVal type As ListItemType, ByVal colname As String) templateType = type columnName = colname End Sub Public Sub InstantiateIn(ByVal Container As Control) Implements System.Web.UI.ITemplate.InstantiateIn Dim lc As New Literal 'En esta parte intento crear la columna template pero binculada con el Container.DataItem lc.Text = "<a href='pagina.aspx?dir=" & DataBinder.Eval(Container.dataitem, Me.columnName) & "'> Vinculo_1 </a>" Container.Controls.Add(lc) End Sub End Class Espero esto sea suficiente, gracias. |
| ||||
Creo que sería así:
Código:
Saludos Public Class ColumnTemplate Implements ITemplate Dim columnName As String 'Constructor Public Sub New(ByVal colname As String) columnName = colname End Sub Sub OnDataBound(ByVal sender As Object, ByVal e As EventArgs) Dim ctrl As HtmlControls.HtmlAnchor = CType(sender, HtmlControls.HtmlAnchor) Dim Container As DataGridItem = CType(ctrl.NamingContainer, DataGridItem) ctrl.HRef = String.Format("pagina.aspx?dir={0}", Container.DataItem(columnName)) End Sub Public Sub InstantiateIn(ByVal container As Control) Implements System.Web.UI.ITemplate.InstantiateIn Dim lnk As New HtmlControls.HtmlAnchor AddHandler lnk.DataBinding, AddressOf Me.OnDataBound lnk.InnerText = "Vinculo_1" Container.Controls.Add(lnk) End Sub |
| |||
xknown, ejecute tu codigo pero me genera el siguiente error: No se encontró ningún miembro predeterminado para el tipo 'DirectoryInfo'. en la linea: ctrl.HRef = String.Format("pagina.aspx?dir={0}", Container.DataItem(columnName)) alguna idea de que pudiera estar ocurriendo?? muchas gracias. Saludos. |
| |||
Lo he resuelto, remplace la linea que genera el error por esta: ctrl.HRef = String.Format("pagina.aspx?dir={0}", DataBinder.Eval(Container.DataItem, "Name")) Muchas gracias por tu ayuda... ahora, seria mucho pedir que por favor expliques los siguientes procedimientos? Sub OnDataBound(ByVal sender As Object, ByVal e As EventArgs) Dim ctrl As HtmlControls.HtmlAnchor = CType(sender, HtmlControls.HtmlAnchor) Dim Container As DataGridItem = CType(ctrl.NamingContainer, DataGridItem) ctrl.HRef = String.Format("pagina.aspx?dir={0}", DataBinder.Eval(Container.DataItem, "Name")) End Sub Public Sub InstantiateIn(ByVal container As Control) Implements System.Web.UI.ITemplate.InstantiateIn Dim lnk As New HtmlControls.HtmlAnchor AddHandler lnk.DataBinding, AddressOf Me.OnDataBound lnk.InnerText = "Vinculo_1" container.Controls.Add(lnk) End Sub muchisimas gracias por tu tiempo. Saludos de antemano. |