Foros del Web » Programación para mayores de 30 ;) » .NET »

Insertar un datarow

Estas en el tema de Insertar un datarow en el foro de .NET en Foros del Web. Es lo que necesito o no ?? En realidad mi problema es con un dorpdownlist que enlazo a una bd para mostrar contenido, y quiero ...
  #1 (permalink)  
Antiguo 28/10/2004, 17:23
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago Chile
Mensajes: 119
Antigüedad: 20 años, 1 mes
Puntos: 0
Pregunta Insertar un datarow

Es lo que necesito o no ??

En realidad mi problema es con un dorpdownlist que enlazo a una bd para mostrar contenido, y quiero aplicarle un requeiredfieldvalidator, pero como siempre tiene un contenido no funciona el validator.

Lucxx me decia que le insertara un datarow, pero no se como en verdad, he visto varias cosas pero aun no encuentro la solucion.

Quizas el requiredfieldvalidator tenga alguna opcion que me ayude, no se. plop

A alguien se le ocurre ??
  #2 (permalink)  
Antiguo 29/10/2004, 09:37
Avatar de lucxx  
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 321
Antigüedad: 21 años
Puntos: 0
A ver, ya voy con la solucion

Supongamos que tu dataset se llama ds, en el se carga una tabla con 2 campos (nombre y valor). Añadimos un nuevo registro a la tabla con los campos en blanco (notar que en este caso los dos son de tipo string),
y despues obtenemos una vista de la tabla, llamada "datosDrop", la cual ordenamos por el campo "valor" (para que salga primero el campo en blanco)
Código:
 
   Dim miRow as DataRow
   miRow = ds.Tables(0).NewRow()
   miRow("nombre") = ""
   miRow("valor") = ""
   ds.Tables(0).Rows.Add(miRow)
   
   datosDrop = ds.Tables(0).DefaultView
   datosDrop.Sort = "valor"
Después, realizamos el databind del dropDownList a la vista que hemos obtenido:
Código:
 
  ddl_regMes.DataSource = datosDrop
  ddl_regMes.DataTextField = "nombre"
  ddl_regMes.DataValueField = "valor"
  ddl_regMes.DataBind()
y ya está.

PD: para este caso, un dropdownlist que muestra los meses del año (campo nombre-> el nombre del mes, campo valor-> el numero de mes) yo los traigo de un fichero XML, por lo que una solucion mas simple es incluir el campo en blanco en el propio fichero XML:
Código:
 
<?xml version="1.0" encoding="iso-8859-1"?>
<meses>
 <mes>
  <nombre></nombre>
  <valor></valor>
 </mes>
 <mes>
  <nombre>Enero</nombre>
  <valor>1</valor>
 </mes>
 <mes>
  <nombre>Febrero</nombre>
  <valor>2</valor>
 </mes>
 <mes>
  <nombre>Marzo</nombre>
  <valor>3</valor>
 </mes>
 <mes>
  <nombre>Abril</nombre>
  <valor>4</valor>
 </mes>
 <mes>
  <nombre>Mayo</nombre>
  <valor>5</valor>
 </mes>
 <mes>
  <nombre>Junio</nombre>
  <valor>6</valor>
 </mes>
 <mes>
  <nombre>Julio</nombre>
  <valor>7</valor>
 </mes>
 <mes>
  <nombre>Agosto</nombre>
  <valor>8</valor>
 </mes>
 <mes>
  <nombre>Septiembre</nombre>
  <valor>9</valor>
 </mes>
 <mes>
  <nombre>Octubre</nombre>
  <valor>10</valor>
 </mes>
 <mes>
  <nombre>Noviembre</nombre>
  <valor>11</valor>
 </mes>
 <mes>
  <nombre>Diciembre</nombre>
  <valor>12</valor>
 </mes>
</meses>
Como sospecho que me vas a preguntar como traer los datos del archivo XML, adelanto la respuesta:
Código:
 
  Dim datosDrop as new DataView
  Dim ds as new DataSet
  Dim fs as FileStream
  Dim XMLStream as StreamReader
 
  fs = new FileStream(Server.MapPath("../xml/dias.xml"), FileMode.Open, FileAccess.Read)
  XMLStream = new StreamReader(fs)
  ds.ReadXML(XMLStream)
  XMLStream.Close()
  fs.close()
  
  datosDrop = ds.Tables(0).DefaultView
 
  ' Rellenamos el dropDownList
  ddl_regDia.DataSource = datosDrop
  ddl_regDia.DataTextField = "nombre"
  ddl_regDia.DataValueField = "valor"
  ddl_regDia.DataBind()
 
  datosDrop.Dispose()
  ds.Dispose()
Teniendo en cuenta que debes importar los namespaces:
Código:
   
Imports System.Data
Imports System.IO
Espero que esto haya resuelto tus dudas

Salu2
  #3 (permalink)  
Antiguo 29/10/2004, 10:44
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago Chile
Mensajes: 119
Antigüedad: 20 años, 1 mes
Puntos: 0
Uyy
esta buena la explicacion
ojala que me resulte
gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:56.