2011-04-15 97 views
0

我有一張桌子,我有文本框,讓我們建立連接!我使用的是ASP.NET和sql server2008;我已經將我的連接字符串編碼到webconfig文件中,但是我已經掛上瞭如何從我的表中填充特定字段的特定文本框。更具體地說,用戶將在主頁上提交數據,然後有機會在編輯頁面上編輯這些數據。我知道,會話將是最簡單的方法,但我的培訓師專門禁止它,理由是高流量會導致會話對象出現問題,並命令我使用sql連接。他是老闆。那麼,如何才能從主頁插入的數據顯示在編輯頁面上的可編輯文本框中?如何用表格數據填充文本框?

回答

3

看看這個:Data-Binding

您可以使用FormView控件來顯示存儲在SQL Server上的數據。

你必須定義這樣一個SqlDataSource:

<asp:SqlDataSource 
     id="SqlDataSource1" 
     runat="server" 
     DataSourceMode="DataReader" 
     ConnectionString="<%$ ConnectionStrings:MyNorthwind%>" 
     SelectCommand="SELECT FirstName, LastName, Title FROM Employees"> 
    </asp:SqlDataSource> 

然後你可以使用FormView控件這樣的:

<asp:FormView ID="FormView1" 
    DataSourceID="SqlDataSource1" 
    DataKeyNames="ProductID"  
    RunAt="server"> 
<ItemTemplate> 
<table> 
    <tr> 
    <td align="right"><b>Product ID:</b></td>  
    <td><%# Eval("ProductID") %></td> 
    </tr> 
    <tr> 
    <td align="right"><b>Product Name:</b></td>  
    <td><%# Eval("ProductName") %></td> 
    </tr> 
    <tr> 
    <td align="right"><b>Category ID:</b></td>  
    <td><%# Eval("CategoryID") %></td> 
    </tr> 
    <tr> 
    <td align="right"><b>Quantity Per Unit:</b></td> 
    <td><%# Eval("QuantityPerUnit") %></td> 
    </tr> 
    <tr> 
    <td align="right"><b>Unit Price:</b></td>  
    <td><%# Eval("UnitPrice") %></td> 
    </tr> 
</table>     


希望這有助於....

0

你可以做一個SELECT命令,然後把不管它是使用下面的代碼數據到TextBox:

YourTextBox.Text = yourDBValue; 
+0

這似乎並不奏效。我有正確的連接字符串和SELECT命令,但是當我從表中衝入列名時,出現錯誤消息,說明'CustId'不存在。什麼是DBValue的語法? – 2011-04-15 18:56:19

0

假設有某種登錄系統(即你至少可以識別您的用戶),那麼這個任務相當簡單。

當用戶在主頁/數據輸入頁面上輸入數據時,驗證數據服務器端,假設一切正常,將此數據存儲在當前用戶的數據庫中。所以,也許他們正在輸入他們的地址(作爲例子)。你可能有這樣的事情:

// NB: this is NOT code, just shorthand for a hypothetical database schema 
Table: User 
    Columns: User_ID, Email, Name 

Table: Address 
    Columns: User_ID (foreign key into User), Line1, Line2, ... PostCode, Country ... (you get the picture) 

所以,他們已經進入了數據之後,您將詳細信息存儲到這個表中,設置USER_ID是當前用戶的ID。

然後,在編輯頁面上,您可以查找當前用戶的現有地址詳細信息,並將頁面上文本框的值設置爲各種列值。

更好的是,您還可以將編輯頁面設置爲初始輸入頁面,如果未找到現有數據,則會將文本框留空,從而使您無需編寫2個單獨的頁面。

如果您沒有這種類型的架構,您擁有用戶帳戶或任何其他用戶,但數據是用戶特定的,您仍然可以使用類似這樣的方案,但不是在User_ID上鍵入Address表,你可以使用一個像你分配給用戶並存儲在他們的會話中的GUID的值。這將允許您至少在他們的會話期間跟蹤用戶。爲了延長這一點,你可以寫這個值到一個cookie,記住設置過期日期,這將允許你跟蹤他們的一些會議,直到cookie過期,或者改變瀏覽器等

Table: Address 
    Columns: Session_Guid, Line1, Line2, ... PostCode, Country ... 

這是大多數網站的登錄基礎,他們使用cookie中的唯一值來跟蹤用戶。

0

你在問怎麼拿一個文本框,en刪除一些數據,然後將其提交給數據庫?

那麼插入語句?我會使用LINQ,但我不確定你在使用它。或者準備一個處理插入的存儲過程。然而,以最簡單的形式:

try { 
    using (SqlConnection conn = new SqlConnection(cstr)) { 
     SqlParameter name = cmd.Parameters.Add("@name", SqlDbType.NVarChar, 15); 
     name.Value = TextBox1.Text; 
     string insertString = @"insert into Table(columnName) values (@name)"; 

     SqlCommand cmd = new SqlCommand(insertString, conn); 
     cmd.ExecuteNonQuery(); 
    } 
} catch (Exception ex) { 
    //do some logging 
} finally { 
    conn.Close(); 
}