如何动态生成文本框并收集用户输入的数据? [英] How to dynamically generate textbox and collect data entered by user?
问题描述
我们使用数据库创建动态项目的数据收集表单
我用过该代码从数据库中的表生成标签和文本框(当用户点击按钮加载CRF)时,
受保护的子按钮1_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
对于I = 0 To(ItemCount - 1)
Dim itemname As String = CRFgrid.Rows(0 + I).Cells(1).Text.ToString
会话(Item)=Item+(I + 1).ToString
Dim ItemNamelabel As New Label
Dim ItemNameBox As New TextBox
ItemNamelabel.ID =L+(I + 1).ToString
会话(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)
下一个
End Sub
当加载数据收集表单时,页面看起来像这样
和查看页面源显示
<!DOCTYPE html PUBLIC - // W3C // DTD XHTML 1.0 Transitional // ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
< html xmlns =http://www.w3.org/1999/xhtml>
< head>< title>
< / title>< / head>
< body>
< form method =postaction =Default.aspxid =form1>
< div class =aspNetHidden> id =__ VIEWSTATEvalue =/ wEPDwUKLTI0NTA5MDI3NGRkUb8sl0uZpLbvUN / GSmHgjYxS9xqGR7rmcMBR3Ufhz4w =/>
< / div>
< input type =hiddenname =__ EVENTVALIDATIONid =__ EVENTVALIDATIONvalue =/ wEWCQLf7PXOCQKM54rGBgK7q7GGCALF9vKRBQLs7 + btDALs7 + LtDALs797tDALs79rtDALs79btDDHrb + Vhkcph8brtCJP9 // 5IH57FFoImey2PApARP + k1/>
< input type =submitname =Button1value =LoadCRFid =Button1style =width:85px; />
< br />
< br />
< input type =submitname =Button2value =InsertDataid =Button2style =width:85px; />
< br />
< br />
MRN
< input name =MRNtxttype =textid =MRNtxt/>
< br />
< br />
< span id =L1>< br /> Item1诊断< br />< / span>< input name =T1type =textid =T1 />< span id =L2>< br /> Item2处理协议< br />< / span>< input name =T2type =textid = T2/>< span id =L3>< br /> Item3初始CSF< br />< / span>< input name =T3type =textid = T3/>< span id =L4>< br /> Item4位置< br />< / span>< input name =T4type =textid = T4/>< span id =L5>< br /> Item5顾问< br />< / span>< input name =T5type =textid = T5/>< / form>
用户填写表单并单击插入,我想使用此代码将输入的文本保存到数据库中的其他表格中。这是行不通的。可以告诉我我的错误在哪里?
受保护的子按钮2_Click(ByVal sender As Object,ByVal e As System.EventArgs)句柄Button2.Click
Dim mydb As New OleDbConnection
mydb =
新的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
会话(FUt)=L+ M.ToString
会话(FUDt)=T+ M.ToString
Dim sqlstring =INSERT INTO [跟随]([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)。文本
mydbcommand.Parameters.Add(@+ Session(FUDt),OleDbType.VarChar) .Value = Session(FUDt)。文本
mydbcommand.ExecuteNonQuery()
下一个
mydb.Close()
End Sub
当我点击插入时,错误消息如下所示:
请检查这篇文章
I will appreciate answers in VB or C#
we use a database to create Data Collection forms with dynamic items
I used this code to generate labels and textboxes from a table in database (when the user hits the button "load 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
when the data collection form is loaded, the page looks like this
and the "view page source" shows
<!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>
once the user fills the form and click insert, i want to save entered text into a other tabel in the database using this code. it does not work. can u tell me where my mistake is?
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
the error message looks like this when i click "insert"
Please Check this article
Creating Dynamic User Friendly Web-Based Data Collection Forms
这篇关于如何动态生成文本框并收集用户输入的数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!