hi,
My name is Francisco, I update 2010 Q2 to 2011 Q2 ASP NET and my grid don't work, before update working fine.
When i click edit button of a row, show me a error in the status bar of Internet Explorer version 8.
The error message is:
Can you help me please.
Regards....
3 Answers, 1 is accepted
0
Hi Francisco Rios,
I assume the problem might be caused by a databinding issue. Please confirm if you are using simple or advanced data-binding. Issues like this one have been reported when using simple data-binding.
Best wishes,
Pavlina
the Telerik team
I assume the problem might be caused by a databinding issue. Please confirm if you are using simple or advanced data-binding. Issues like this one have been reported when using simple data-binding.
Best wishes,
Pavlina
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
0

Alfa
Top achievements
Rank 1
answered on 08 Aug 2011, 11:04 PM
Hi,
i tought use both binding.
this is my code. can you check please.
Regards...
Imports
System.Data
Imports
System.Data.SqlClient
Imports
Telerik.Web.UI
Imports
System.Globalization
Imports
System.Threading
Imports
System.Net
Partial
Class
Inventarios_Ciclicos_Captura_Existencias
Inherits
System.Web.UI.Page
Private
Function
Validador(
ByVal
Editor
As
GridNumericColumnEditor,
ByVal
Nombre
As
String
)
As
RequiredFieldValidator
Dim
validator
As
RequiredFieldValidator =
New
RequiredFieldValidator
Editor.NumericTextBox.ID = Nombre +
"_Validacion"
validator.ControlToValidate = Editor.NumericTextBox.ID
validator.ErrorMessage =
"*"
Return
validator
End
Function
Private
Function
Crear_Tabla_Productos(
ByVal
ID
As
String
)
As
DataTable
Dim
tblProductos
As
New
DataTable(
"Productos"
)
tblProductos.Columns.Add(
"Producto"
,
GetType
(
Short
))
tblProductos.Columns.Add(
"NomProducto"
,
GetType
(
String
))
tblProductos.Columns.Add(
"Existencia_Fisica"
,
GetType
(
Integer
))
tblProductos.Columns.Add(
"Existencia_SAI"
,
GetType
(
Integer
))
tblProductos.Columns.Add(
"Unidad"
,
GetType
(
String
))
Dim
PrimaryKeyColumns(0)
As
DataColumn
PrimaryKeyColumns(0) = tblProductos.Columns(
"Producto"
)
tblProductos.PrimaryKey = PrimaryKeyColumns
Dim
Util1
As
New
Utilerias
Using MiBase
As
New
SqlConnection(Util1.Obtener_Conexion(
"DB_Reportes"
))
MiBase.Open()
'Cargo los productos en la tabla temporal
Dim
SQL
As
String
=
" Select a.*, b.desc_prod As NomProducto From Ciclicos_Det a"
+ _
" Left Join Producto b On a.cve_prod = b.cve_prod And a.Base_Datos = b.Base_Datos"
+ _
" Where Id_Interno = '"
+ ID +
"' And Fecha_Captura Is Null"
+ _
" Order By b.desc_prod"
Dim
dsDatos
As
DataSet
dsDatos = Util1.RegresaRegistros_DataSet(MiBase, SQL, 0)
Dim
drDatos
As
DataRow
For
Each
drDatos
In
dsDatos.Tables(0).Rows
Dim
Renglon
As
DataRow = tblProductos.NewRow
Renglon(
"Producto"
) = drDatos(
"cve_prod"
)
Renglon(
"NomProducto"
) = drDatos(
"NomProducto"
)
Renglon(
"Existencia_Fisica"
) = drDatos(
"Existencia_Fisica"
)
tblProductos.Rows.Add(Renglon)
Next
tblProductos.AcceptChanges()
End
Using
Return
tblProductos
End
Function
'Private Function Obtener_Existencia_SAI(ByVal Producto As String, ByVal Bodega As String) As Double
' Dim SQL As String = " Select Sum(existencia) As Existencia From Existe" + _
' " Where cve_prod = '" + Producto + "' And lugar = '" + Bodega + "'"
' Dim Util1 As New Utilerias
' Using MiBase As New SqlConnection(Util1.Obtener_Conexion("DB_Reportes"))
' MiBase.Open()
' Dim dtDatos As SqlDataReader
' dtDatos = Util1.RegresaRegistros_DataReader(MiBase, SQL, 0)
' If dtDatos.Read Then
' Return IIf(IsDBNull(dtDatos("Existencia")), 0, dtDatos("Existencia"))
' Else
' Return 0
' End If
' End Using
'End Function
Private
Function
Cargar_Existencia_SAI(
ByVal
TblCiclicos
As
DataTable)
As
DataTable
Dim
dtExistencias
As
DataTable = TblCiclicos
Dim
drExistencias
As
DataRow
'Dim MiProxy As WebProxy = New WebProxy()
'MiProxy.Credentials = CredentialCache.DefaultCredentials
Dim
ws
As
New
ws_reportes.Datos_Reportes
'ws.Proxy = MiProxy
For
Each
drExistencias
In
dtExistencias.Rows
If
Not
IsDBNull(drExistencias(
"Existencia_Fisica"
))
Then
drExistencias.BeginEdit()
Dim
Mensaje
As
String
drExistencias(
"Existencia_SAI"
) = ws.Obtener_Existencia_SAI(
Me
.hfBD.Value, drExistencias(
"Producto"
),
Me
.txtBodega.Text, Mensaje)
drExistencias.EndEdit()
End
If
Next
dtExistencias.AcceptChanges()
Return
dtExistencias
End
Function
Private
Function
Muestra_Informacion_Encabezado(
ByVal
ID
As
String
)
As
Boolean
If
ID =
""
Then
lblMensajeId.Text =
"Folio no válido."
Me
.pgMensaje.Selected =
True
Return
False
End
If
Thread.CurrentThread.CurrentCulture =
New
CultureInfo(
"es-MX"
)
Dim
SQL
As
String
=
" Select * From Ciclicos_Enc"
+ _
" Where Id_Interno = '"
+ ID +
"'"
Dim
Util1
As
New
Utilerias
Dim
MiBase
As
New
SqlConnection(Util1.Obtener_Conexion(
"DB_Reportes"
))
Dim
dsDatos
As
DataSet
dsDatos = Util1.RegresaRegistros_DataSet(MiBase, SQL, 0)
If
dsDatos.Tables(0).Rows.Count > 0
Then
txtFolio.Text = dsDatos.Tables(0).Rows(0)(
"Folio"
)
txtBodega.Text = dsDatos.Tables(0).Rows(0)(
"Bodega"
).ToString.TrimEnd
Me
.txtFecha.Text =
CDate
(dsDatos.Tables(0).Rows(0)(
"Fecha"
)).ToShortDateString
txtFolio2.Text = dsDatos.Tables(0).Rows(0)(
"Folio"
)
txtBodega2.Text = dsDatos.Tables(0).Rows(0)(
"Bodega"
).ToString.TrimEnd
Me
.txtFecha2.Text =
CDate
(dsDatos.Tables(0).Rows(0)(
"Fecha"
)).ToShortDateString
Dim
lnkUsuario
As
HyperLink =
CType
(
Me
.UcEncabezado1.FindControl(
"lnkUsuario"
), HyperLink)
lnkUsuario.Text = dsDatos.Tables(0).Rows(0)(
"Responsable"
)
Me
.hfBD.Value = dsDatos.Tables(0).Rows(0)(
"Base_Datos"
)
If
dsDatos.Tables(0).Rows(0)(
"Liberado"
) <> 0
Then
lblMensajeId.Text =
"El Folio "
+ dsDatos.Tables(0).Rows(0)(
"Folio"
).ToString +
" ya no tiene movimientos pendientes por capturar."
Me
.pgMensaje.Selected =
True
Return
False
End
If
Else
lblMensajeId.Text =
"Folio no válido."
Me
.pgMensaje.Selected =
True
Return
False
End
If
Return
True
End
Function
Protected
Sub
Page_Load(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
Me
.Load
'hdtoSaveData.Value = "xxx"
If
Not
Page.IsPostBack
Then
'Me.btnGuardar.Attributes.Add("onclick", "return validar_datos();")
Dim
ID
As
String
If
Not
Me
.Page.Request(
"ID"
)
Is
Nothing
Then
ID =
CType
(
Me
.Page.Request(
"ID"
),
String
)
Else
ID =
""
End
If
If
Muestra_Informacion_Encabezado(ID)
Then
Session(
"GridProductos"
) = Crear_Tabla_Productos(ID)
End
If
End
If
End
Sub
Protected
Sub
grdProductos_ItemCommand(
ByVal
source
As
Object
,
ByVal
e
As
Telerik.Web.UI.GridCommandEventArgs)
Handles
grdProductos.ItemCommand
Try
If
e.CommandName = RadGrid.InitInsertCommandName
Then
Session(
"Editar_Producto"
) =
True
Session(
"Actualizar_Producto"
) =
True
ElseIf
e.CommandName = RadGrid.EditCommandName
Then
Session(
"Editar_Producto"
) =
True
Session(
"Actualizar_Producto"
) =
Nothing
Me
.grdProductos.DataSource = Session(
"GridProductos"
)
ElseIf
e.CommandName = RadGrid.CancelCommandName
Then
Session(
"Actualizar_Producto"
) =
True
Session(
"Editar_Producto"
) =
Nothing
ElseIf
e.CommandName = RadGrid.UpdateCommandName
Then
Dim
dtProductos
As
DataTable = Session(
"GridProductos"
)
Dim
i
As
Short
For
i = 0
To
Me
.grdProductos.EditIndexes.Count - 1
Dim
dataItem
As
GridDataItem =
CType
(grdProductos.MasterTableView.Items(grdProductos.EditIndexes(i)), GridDataItem)
Dim
editItem
As
GridEditableItem = IIf(dataItem.OwnerTableView.EditMode = GridEditMode.InPlace,
CType
(dataItem, GridEditableItem),
CType
(dataItem.EditFormItem, GridEditableItem))
Dim
mng
As
GridEditManager = editItem.EditManager
Dim
editorTextKey
As
String
=
Nothing
Dim
column
As
GridColumn
For
Each
column
In
dataItem.OwnerTableView.Columns
If
TypeOf
column
Is
IGridEditableColumn
Then
Dim
editedColumn
As
IGridEditableColumn =
CType
(column, IGridEditableColumn)
If
Not
TypeOf
editedColumn
Is
GridTemplateColumn
Then
Dim
editor
As
IGridColumnEditor = mng.GetColumnEditor(editedColumn)
'Dim editorType As String = editor.ToString
Dim
editorText
As
String
=
Nothing
If
TypeOf
editor
Is
GridTextColumnEditor
Then
editorText = (
CType
(editor, GridTextColumnEditor)).Text
ElseIf
TypeOf
editor
Is
GridDropDownColumnEditor
Then
editorText = (
CType
(editor, GridDropDownColumnEditor)).SelectedValue
End
If
Try
'No permito que la llave se actualice si no hasta al final ya que se pierde referencia con el registro
If
column.UniqueName <>
"Producto"
Then
Dim
changedRows
As
DataRow() = dtProductos.
Select
(
"Producto = "
+ editItem.OwnerTableView.DataKeyValues(editItem.ItemIndex)(
"Producto"
).ToString)
changedRows(0)(column.UniqueName) = editorText
Else
editorTextKey =
CType
(editor, GridTextBoxColumnEditor).Text
End
If
Catch
ex
As
Exception
grdProductos.Controls.Add(
New
LiteralControl(
"No se puede actualizar el producto. Razón: "
+ ex.Message))
End
Try
End
If
End
If
Next
'Actualizo la llave
Dim
changedRowsKey
As
DataRow() = dtProductos.
Select
(
"Producto = "
+ editItem.OwnerTableView.DataKeyValues(editItem.ItemIndex)(
"Producto"
).ToString)
changedRowsKey(0)(
"Producto"
) = editorTextKey
Next
dtProductos.AcceptChanges()
Session(
"GridProductos"
) = dtProductos
Session(
"Editar_Producto"
) =
Nothing
Session(
"Actualizar_Producto"
) =
True
ElseIf
e.CommandName = RadGrid.PerformInsertCommandName
Then
Dim
dtProductos
As
DataTable = Session(
"GridProductos"
)
Dim
newRow
As
DataRow = dtProductos.NewRow
Dim
insertItem
As
GridEditableItem =
Me
.grdProductos.MasterTableView.GetInsertItem()
Dim
mng
As
GridEditManager = insertItem.EditManager
Dim
newValues
As
Hashtable =
New
Hashtable
For
Each
column
As
GridColumn
In
insertItem.OwnerTableView.Columns
If
TypeOf
column
Is
IGridEditableColumn
Then
Dim
editableCol
As
IGridEditableColumn = (
CType
(column, IGridEditableColumn))
If
editableCol.IsEditable
Then
Dim
editor
As
IGridColumnEditor = mng.GetColumnEditor(editableCol)
Dim
editorText
As
String
=
"unknown"
Dim
editorValue
As
Object
=
Nothing
If
TypeOf
editor
Is
GridTextColumnEditor
Then
editorText = (
CType
(editor, GridTextColumnEditor)).Text
editorValue = (
CType
(editor, GridTextColumnEditor)).Text
End
If
If
TypeOf
editor
Is
GridBoolColumnEditor
Then
editorText = (
CType
(editor, GridBoolColumnEditor)).Value.ToString
editorValue = (
CType
(editor, GridBoolColumnEditor)).Value
End
If
If
TypeOf
editor
Is
GridDropDownColumnEditor
Then
editorText = (
CType
(editor, GridDropDownColumnEditor)).SelectedText +
"; "
+ (
CType
(editor, GridDropDownColumnEditor)).SelectedValue
editorValue = (
CType
(editor, GridDropDownColumnEditor)).SelectedValue
End
If
'If TypeOf editor Is GridDateTimeColumn Then
' editorText = (CType(editor, GridDateTimeColumn)).DataFormatString + "; " + (CType(editor, GridDateTimeColumn)).DataFormatString
' editorValue = (CType(editor, GridDateTimeColumn)).DataFormatString
'End If
Try
newRow(column.UniqueName) = editorValue
Catch
ex
As
Exception
grdProductos.Controls.Add(
New
LiteralControl(
"No se puede agregar el producto. Razón: "
+ ex.Message))
End
Try
End
If
End
If
Next
Session(
"Editar_Producto"
) =
Nothing
Session(
"Actualizar_Producto"
) =
Nothing
Try
dtProductos.Rows.Add(newRow)
Catch
ex
As
Exception
grdProductos.Controls.Add(
New
LiteralControl(
"No se puede agregar el producto. Razón: "
+ ex.Message))
End
Try
Session(
"GridProductos"
) = dtProductos
Me
.grdProductos.DataSource = Session(
"GridProductos"
)
ElseIf
e.CommandName = RadGrid.DeleteCommandName
Then
Dim
ID
As
String
= e.Item.OwnerTableView.DataKeyValues(e.Item.ItemIndex)(
"Producto"
).ToString()
Dim
dtProductos
As
DataTable = Session(
"GridProductos"
)
If
Not
dtProductos.Rows.Find(ID)
Is
Nothing
Then
dtProductos.Rows.Find(ID).Delete()
dtProductos.AcceptChanges()
Session(
"GridProductos"
) = dtProductos
End
If
Session(
"Editar_Producto"
) =
Nothing
Session(
"Actualizar_Producto"
) =
True
End
If
Catch
exception
As
Exception
Dim
Util1
As
New
Utilerias
Call
Util1.Agregar_Log_Errores(Session(
"Usuario"
),
"Captura_Existencias"
, 0, exception.Message,
"grdProductos_ItemCommand"
)
End
Try
End
Sub
Protected
Sub
grdProductos_ItemCreated(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.GridItemEventArgs)
Handles
grdProductos.ItemCreated
Try
If
(
TypeOf
e.Item
Is
GridEditableItem
AndAlso
e.Item.IsInEditMode)
Then
Dim
item
As
GridEditableItem =
CType
(e.Item, GridEditableItem)
Dim
editor
As
GridNumericColumnEditor =
CType
(item.EditManager.GetColumnEditor(
"Existencia_Fisica"
), GridNumericColumnEditor)
Dim
cell
As
TableCell =
CType
(editor.NumericTextBox.Parent, TableCell)
cell.Controls.Add(Validador(editor,
"Existencia_Fisica"
))
End
If
Catch
exception
As
Exception
Dim
Util1
As
New
Utilerias
Call
Util1.Agregar_Log_Errores(Session(
"Usuario"
),
"Captura_Existencias"
, 0, exception.Message,
"grdProductos_ItemCommand"
)
End
Try
End
Sub
Protected
Sub
grdProductos_ItemDataBound(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.GridItemEventArgs)
Handles
grdProductos.ItemDataBound
Try
If
TypeOf
e.Item
Is
GridEditableItem
And
e.Item.IsInEditMode
Then
Dim
edititem
As
GridEditableItem =
CType
(e.Item, GridEditableItem)
Dim
txtProducto
As
TextBox =
CType
(edititem(
"Producto"
).Controls(0), TextBox)
txtProducto.Width = Unit.Pixel(50)
'txtProducto.Enabled = False
txtProducto.
ReadOnly
=
True
txtProducto.Font.Size = 9
Dim
txtExistenciaFisica
As
RadNumericTextBox =
CType
(edititem(
"Existencia_Fisica"
).Controls(0), RadNumericTextBox)
txtExistenciaFisica.Width = Unit.Pixel(100)
txtExistenciaFisica.Font.Size = 9
Dim
txtNomProducto
As
TextBox =
CType
(edititem(
"NomProducto"
).Controls(0), TextBox)
txtNomProducto.Width = Unit.Pixel(220)
txtNomProducto.Font.Size = 9
'txtNomProducto.Enabled = False
txtNomProducto.
ReadOnly
=
True
txtNomProducto.MaxLength = 100
End
If
Catch
exception
As
Exception
Dim
Util1
As
New
Utilerias
Call
Util1.Agregar_Log_Errores(Session(
"Usuario"
),
"Captura_Existencias"
, 0, exception.Message,
"grdProductos_ItemCommand"
)
End
Try
End
Sub
Protected
Sub
grdProductos_NeedDataSource(
ByVal
source
As
Object
,
ByVal
e
As
Telerik.Web.UI.GridNeedDataSourceEventArgs)
Handles
grdProductos.NeedDataSource
Try
If
(Session(
"Editar_Producto"
)
Is
Nothing
And
Not
Page.IsPostBack)
Then
Me
.grdProductos.DataSource = Session(
"GridProductos"
)
ElseIf
Not
Session(
"Actualizar_Producto"
) =
Nothing
Then
Me
.grdProductos.DataSource = Session(
"GridProductos"
)
Session(
"Actualizar_Producto"
) =
Nothing
End
If
Catch
exception
As
Exception
Dim
Util1
As
New
Utilerias
Call
Util1.Agregar_Log_Errores(Session(
"Usuario"
),
"Captura_Existencias"
, 0, exception.Message,
"grdProductos_ItemCommand"
)
End
Try
End
Sub
Protected
Sub
btnGuardar_Click(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
btnGuardar.Click
Me
.txtObservaciones2.Text =
Me
.txtObservaciones.Text
Dim
dtCiclicos
As
DataTable =
CType
(Session(
"GridProductos"
), DataTable)
Session(
"GridProductos"
) = Cargar_Existencia_SAI(dtCiclicos)
Me
.grdProductos2.DataSource = Session(
"GridProductos"
)
Me
.grdProductos2.DataBind()
Me
.pgMensajeGuardar.Selected =
True
If
Not
Me
.Page.Request(
"ID"
)
Is
Nothing
Then
ID =
CType
(
Me
.Page.Request(
"ID"
),
String
)
Else
ID =
""
End
If
Dim
Util1
As
New
Utilerias
Using MiBase
As
New
SqlConnection(Util1.Obtener_Conexion(
"DB_Reportes"
))
MiBase.Open()
Dim
Transaccion
As
SqlTransaction
Transaccion = MiBase.BeginTransaction(
"Transacion"
)
Try
Dim
dtProductos
As
DataTable =
CType
(Session(
"GridProductos"
), DataTable)
Dim
drProductos
As
DataRow
For
Each
drProductos
In
dtProductos.Rows
If
Not
IsDBNull(drProductos(
"Existencia_Fisica"
))
Then
Dim
cmdCiclicosDet
As
New
SqlCommand()
cmdCiclicosDet.Connection = MiBase
cmdCiclicosDet.Transaction = Transaccion
cmdCiclicosDet.CommandType = CommandType.StoredProcedure
cmdCiclicosDet.CommandText =
"spUpd_Ciclicos_Det"
cmdCiclicosDet.Parameters.Add(
"@ID"
, SqlDbType.VarChar, 36)
cmdCiclicosDet.Parameters.Add(
"@Producto"
, SqlDbType.VarChar, 10)
cmdCiclicosDet.Parameters.Add(
"@Existencia_Fisica"
, SqlDbType.Int)
cmdCiclicosDet.Parameters.Add(
"@Existencia_Real"
, SqlDbType.Int)
cmdCiclicosDet.Parameters(
"@ID"
).Value = ID
cmdCiclicosDet.Parameters(
"@Producto"
).Value = drProductos(
"Producto"
)
cmdCiclicosDet.Parameters(
"@Existencia_Fisica"
).Value = drProductos(
"Existencia_Fisica"
)
cmdCiclicosDet.Parameters(
"@Existencia_Real"
).Value = drProductos(
"Existencia_SAI"
)
cmdCiclicosDet.Prepare()
cmdCiclicosDet.ExecuteNonQuery()
End
If
Next
Dim
cmdCiclicosEnc
As
New
SqlCommand
cmdCiclicosEnc.Connection = MiBase
cmdCiclicosEnc.Transaction = Transaccion
cmdCiclicosEnc.CommandType = CommandType.StoredProcedure
cmdCiclicosEnc.CommandText =
"spUpd_Ciclicos_Enc"
cmdCiclicosEnc.Parameters.Add(
"@ID"
, SqlDbType.VarChar, 36)
cmdCiclicosEnc.Parameters.Add(
"@Observaciones"
, SqlDbType.Text)
cmdCiclicosEnc.Parameters(
"@ID"
).Value = ID
cmdCiclicosEnc.Parameters(
"@Observaciones"
).Value =
Me
.txtObservaciones.Text
cmdCiclicosEnc.ExecuteNonQuery()
Transaccion.Commit()
'Response.Write("Su operación se realizo con exito.")
Catch
exSQL
As
SqlException
lblMensaje.text = exSQL.Message
Transaccion.Rollback()
Catch
ex
As
Exception
lblMensaje.text = ex.Message
Transaccion.Rollback()
End
Try
End
Using
pnlMensaje.visible =
True
End
Sub
End
Class
0
Hello Francisco Rios,
Note that you should not mix simple databinding with advanced databinding. Simple data-binding with the DataBind() method can be used in simple scenarios which does not require complex operations such as editing, grouping, paging etc. So, in your case I would suggest you to use Advanced Data-binding (using NeedDataSource event) to populate the grid and see if it makes any difference.
All the best,
Pavlina
the Telerik team
Note that you should not mix simple databinding with advanced databinding. Simple data-binding with the DataBind() method can be used in simple scenarios which does not require complex operations such as editing, grouping, paging etc. So, in your case I would suggest you to use Advanced Data-binding (using NeedDataSource event) to populate the grid and see if it makes any difference.
All the best,
Pavlina
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.