如何用表数据填充文本框?

时间:2011-04-15 13:05:00

标签: c# asp.net sql-server visual-studio

我有一张桌子,我有文本框,让我们联系!我正在使用ASP.NET和sql server2008;我已经将我的连接字符串编码到webconfig文件中,但是我已经知道如何用我的表中的特定字段填充特定的文本框。更具体地说,用户将在主页上提交数据,然后有机会在编辑页面上编辑该数据。我知道,会话将是最简单的方法,但我的教练特别禁止它,因为高流量会导致会话对象出现问题,并命令我使用sql连接。他是老板。那么如何从主页插入数据以显示在编辑页面上的可编辑文本框中?

4 个答案:

答案 0 :(得分: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>                 


希望这有帮助......

答案 1 :(得分:0)

您可以执行SELECT命令,然后使用以下代码将任何数据放入TextBox:

YourTextBox.Text = yourDBValue;

答案 2 :(得分: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个单独的页面。

如果您没有这种模式,您拥有用户帐户或其他任何模式,但数据是特定于用户的,您仍然可以使用这样的方案,而不是键入Address表在User_ID中,您可以使用类似GUID的值,您可以将其分配给用户并存储在其会话中。这将允许您至少在会话期间跟踪用户。要扩展它,您可以将此值写入cookie,记住设置过期日期,这将允许您跟踪多个会话,直到cookie过期,或者他们更改浏览器等。

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

这是大多数登录网站的基础,他们使用cookie中的唯一值来跟踪用户。

答案 3 :(得分:0)

您问如何获取文本框,输入一些数据,然后将其提交到数据库?

那么插入语句?我会使用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();
}