2011-11-05 38 views
5

tôi sẽ đánh giá cao câu trả lời trong VB hoặc C#Cách tự động tạo hộp văn bản và thu thập dữ liệu do người dùng nhập?

chúng tôi sử dụng một cơ sở dữ liệu để tạo các biểu mẫu thu thập dữ liệu với công cụ năng động

enter image description here

tôi đã sử dụng mã này để tạo ra nhãn và hộp văn bản từ một bảng trong cơ sở dữ liệu (khi người dùng chạm vào nút "tải 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 

khi biểu mẫu thu thập dữ liệu được nạp, trang trông như thế này

enter image description here

và "mã nguồn trang web xem" cho thấy

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

khi người dùng điền vào biểu mẫu và bấm chèn, tôi muốn lưu văn bản đã nhập vào một tabel khác trong cơ sở dữ liệu bằng cách sử dụng mã này. nó không hoạt động. bạn có thể cho tôi biết sai lầm của tôi ở đâu không?

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 

được thông báo lỗi như thế này khi tôi bấm vào nút "chèn"

enter image description here

+0

Khi bạn nói "nó không hoạt động", được những gì bạn mong đợi nó để làm đặc biệt và trong một số chi tiết và chính xác thì nó sẽ làm gì? Nếu có bất kỳ ngoại lệ hoặc thông báo lỗi nào được hiển thị, chúng là gì? –

+0

tôi đã chỉnh sửa câu hỏi của mình @ MerlynMorgan-Graham –

+0

Chi tiết tốt hơn nhiều. Tôi không thể đọc ảnh chụp màn hình nguồn trang. Nếu nó không quan trọng, tôi khuyên bạn nên loại bỏ nó. Nếu nó có vấn đề, tôi đề nghị bạn dán mã vào câu hỏi chứ không phải là ảnh chụp màn hình. Thông báo ngoại lệ cũng sẽ tốt hơn trong văn bản. –

Trả lời

0

Đó là ... = Session("FUt").Text của bạn và ... = Session("FUDt").Text.

Đây là các chuỗi và .Text đang cố gọi một thuộc tính không tồn tại.

+0

tôi cần một giải pháp để lấy dữ liệu đã nhập vào cơ sở dữ liệu hay không. bạn có thể sửa mã của tôi để làm điều này không? –

+0

nếu bạn cần thêm chi tiết, vui lòng cho tôi biết –

0

Phiên được xác định ở đâu? Bạn đã kiểm tra cấp độ truy cập của thuộc tính Văn bản (nó cần phải được công khai nếu không ngoại lệ bạn đang nhận sẽ được ném)?

+0

tôi cần giải pháp để nhập dữ liệu vào cơ sở dữ liệu. bạn có thể sửa mã của tôi để làm điều này không? nếu bạn cần thêm chi tiết, vui lòng cho tôi biết –

2

Bạn cần truy xuất các điều khiển thực tế được tạo trong button1_click thay vì id của chúng mà bạn lưu trữ ở trạng thái phiên. Tuy nhiên, bởi vì các điều khiển này được tạo động khi chạy, mã của bạn sẽ trở nên phức tạp hơn vì bạn sẽ phải thêm tất cả các điều khiển vào trang mỗi khi Page Init được gọi. Xem các bài viết sau đây để biết thêm thông tin:

ASP.NET Page Life Cycle Overview

View State and Dynamically Added Controls

Dynamic Web Controls, Postbacks, and View State

Dựa vào độ phức tạp rằng đây giới thiệu, tôi sẽ đề nghị một phương pháp đơn giản hơn, nơi bạn có một số nhãn và các hộp văn bản đã có trên trang nhưng bị ẩn bởi các thuộc tính CSS (display: none; visibility: hidden).

Một cách tiếp cận tốt hơn nữa là sử dụng điều khiển lưới, điều này lý tưởng cho loại hành vi này. Có rất nhiều ví dụ ở đây:

Table of Contents: GridView Examples for ASP.NET 2.0

+0

+1 để điều khiển lưới. Tôi nghĩ tôi nhớ điều này đơn giản hơn ... –

Các vấn đề liên quan