2011-04-15 94 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(); 
}