visual valor una texto tabla solo que lectura etiqueta cuadro crear busque c# asp.net vb.net dynamic textbox

c# - valor - etiqueta en access



¿Cómo generar dinámicamente el cuadro de texto y recopilar los datos ingresados ​​por el usuario? (4)

¿Dónde se define la sesión? ¿Ha comprobado el nivel de acceso de la propiedad Text (debe ser pública, de lo contrario, se lanzará la excepción)?

Apreciaré las respuestas en VB o C #

utilizamos una base de datos para crear formularios de recopilación de datos con elementos dinámicos

Usé este código para generar etiquetas y cuadros de texto de una tabla en la base de datos (cuando el usuario pulsa el botón "cargar CRF")

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Dim CRFgrid As New GridView CRFgrid.DataSource = CRFds CRFgrid.DataBind() Dim ItemCount As Integer = CRFgrid.Rows.Count Session("Itemcount") = CRFgrid.Rows.Count For I = 0 To (ItemCount - 1) Dim itemname As String = CRFgrid.Rows(0 + I).Cells(1).Text.ToString Session("Item") = "Item" + (I + 1).ToString Dim ItemNamelabel As New Label Dim ItemNameBox As New TextBox ItemNamelabel.ID = "L" + (I + 1).ToString Session("FU" + I.ToString) = ItemNamelabel.ID.ToString ItemNameBox.ID = "T" + (I + 1).ToString ItemNamelabel.Text = "<br />" + (Session("Item").ToString) + " " + itemname + " " + "<br />" Me.Form.Controls.Add(ItemNamelabel) Me.Form.Controls.Add(ItemNameBox) Next End Sub

cuando se carga el formulario de recolección de datos, la página se ve así

y la "fuente de la página de visualización" muestra

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title> </title></head> <body> <form method="post" action="Default.aspx" id="form1"> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTI0NTA5MDI3NGRkUb8sl0uZpLbvUN/GSmHgjYxS9xqGR7rmcMBR3Ufhz4w=" /> </div>

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWCQLf7PXOCQKM54rGBgK7q7GGCALF9vKRBQLs7+btDALs7+LtDALs797tDALs79rtDALs79btDDHrb+Vhkcph8brtCJP9//5IH57FFoImey2PApARP+k1" /> <input type="submit" name="Button1" value="LoadCRF" id="Button1" style="width:85px;" /> <br /> <br /> <input type="submit" name="Button2" value="InsertData" id="Button2" style="width:85px;" /> <br /> <br /> MRN <input name="MRNtxt" type="text" id="MRNtxt" /> <br /> <br /> <span id="L1"><br />Item1 Diagnosis <br /></span><input name="T1" type="text" id="T1" /><span id="L2"><br />Item2 Treatment Protocol <br /></span><input name="T2" type="text" id="T2" /><span id="L3"><br />Item3 Initial CSF <br /></span><input name="T3" type="text" id="T3" /><span id="L4"><br />Item4 Location <br /></span><input name="T4" type="text" id="T4" /><span id="L5"><br />Item5 Consultant <br /></span><input name="T5" type="text" id="T5" /></form>

una vez que el usuario llena el formulario y hace clic en Insertar, quiero guardar el texto ingresado en otra tabla en la base de datos usando este código. No funciona. ¿Puedes decirme dónde está mi error?

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click Dim mydb As New OleDbConnection mydb = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= |datadirectory|openclinica.mdb;Persist Security Info=True") mydb.Open() Dim Y As Integer = Session("Itemcount") For M = 1 To Y Session("FUt") = "L" + M.ToString Session("FUDt") = "T" + M.ToString Dim sqlstring = "INSERT INTO [Followup] ([MRN], [FU], [FUData]) VALUES (@MRNtxt, @" + Session("FUt") + ", @" + Session("FUDt") + ");" Dim mydbcommand As New OleDbCommand(sqlstring, mydb) mydbcommand.Parameters.Add("@MRNtxt", OleDbType.VarChar).Value = MRNtxt.Text mydbcommand.Parameters.Add("@" + Session("FUt"), OleDbType.VarChar).Value = Session("FUt").Text mydbcommand.Parameters.Add("@" + Session("FUDt"), OleDbType.VarChar).Value = Session("FUDt").Text mydbcommand.ExecuteNonQuery() Next mydb.Close() End Sub

el mensaje de error se ve así cuando hago clic en "insertar"


Debe recuperar los controles reales que se crean en button1_click en lugar de sus identificadores que almacena en el estado de la sesión.

Sin embargo, debido a que estos controles se crean dinámicamente en tiempo de ejecución, su código se volverá sustancialmente más complejo porque tendrá que agregar todos los controles a la página cada vez que se invoca a Page Init. Vea los siguientes artículos para información adicional:

Resumen del ciclo de vida de la página ASP.NET

Ver controles estatales y dinámicamente agregados

Controles web dinámicos, devoluciones y estado de vista

En función de la complejidad que esto presenta, sugiero un enfoque más directo en el que tenga varias etiquetas y cuadros de texto en la página, pero ocultos por los atributos de CSS ( display: none; visibility: hidden ).

Un enfoque aún mejor es usar un control de cuadrícula, que es ideal para este tipo de comportamiento. Hay muchos ejemplos aquí:

Tabla de contenido: ejemplos de GridView para ASP.NET 2.0


Es su ... = Session("FUt").Text y ... = Session("FUDt").Text .

Estas son cadenas, y .Text está intentando llamar a una propiedad que no existe.