2011-11-05 10 views
5

私は(データベース内のテーブルからラベルとテキストボックスを生成するには、このコードを使用し、我々は動的なアイテムと動的にテキストボックスを生成し、ユーザーが入力したデータを収集する方法は?

enter image description here

をデータ収集フォームを作成するためにデータベースを使用するVBで回答を感謝やC#

ますユーザーは、 "ロード・CRF")

enter image description here

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 
ボタンを押したとき

データ収集フォームがロードされたときに、ページがこの

enter image description here

のように見え、 "表示ページのソースは"

<!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> 

を示し

ユーザーがフォームを入力して挿入をクリックすると、このコードを使用して、入力したテキストをデータベースの他のタブに保存します。それは動作しません。私のミスがどこにあるのか教えていただけますか?

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 

私はそれがあなたの... = Session("FUt").Text... = Session("FUDt").Textある

enter image description here

+0

をチェックして、いくつかの詳細にしてください代わりに何をしているのですか?例外またはエラーメッセージが表示されている場合、それらは何ですか? –

+0

私は@ MerlynMorgan-Grahamの私の質問を編集しました –

+0

はるかに良い詳細。私はページソースのスクリーンショットを読むことができません。それが問題でなければ、私はそれを削除することをお勧めします。問題がある場合は、スクリーンショットではなく質問にコードを貼り付けることをおすすめします。例外メッセージはテキストでも良いでしょう。 –

答えて

0

を "挿入" をクリックすると、エラーメッセージは次のようになります。

これらは文字列であり、.Textは存在しないプロパティを呼び出そうとしています。

+0

私は、データベースに入力されたデータを取得するソリューションが必要です。これを行うために私のコードを修正できますか? –

+0

さらに詳しい情報が必要な場合は –

0

セッションはどこに定義されていますか? Textプロパティのアクセスレベルをチェックしましたか?それ以外の場合は例外がスローされます。

+0

私はデータベースに入力されたデータを取得するための解決策が必要です。これを行うために私のコードを修正できますか?詳細が必要な場合は、 –

2

セッション状態で保存するidではなく、button1_clickで作成された実際のコントロールを取得する必要があります。

ただし、実行時にこれらのコントロールが動的に作成されるため、ページInitが呼び出されるたびにすべてのコントロールをページに追加する必要があるため、コードは大幅に複雑になります。あなたがラベルの数を持っているところ、私はもっと簡単な方法を示唆し、これは導入されていることを複雑に基づき

ASP.NET Page Life Cycle Overview

View State and Dynamically Added Controls

Dynamic Web Controls, Postbacks, and View State

と:追加情報については、以下の記事を参照してください。すでにページにあるテキストボックスはCSS属性(display: none; visibility: hidden)で隠されています。

グリッドコントロールを使用する方が良いでしょう。これは、この種の動作に理想的です。たくさんの例がここにあります

Table of Contents: GridView Examples for ASP.NET 2.0

+0

+1グリッドコントロールについて教えてください。私はこれがもっとシンプルだと思いました... –

関連する問題