【问题标题】:Access code behind data into .aspx page将数据背后的代码访问到 .aspx 页面
【发布时间】:2015-02-26 14:09:12
【问题描述】:


我有一条从 sql 数据库到后面代码的记录。
我想在整个 .aspx 页面中使用它的字段。
我该怎么办?
我的代码是这样的:
默认.aspx.cs

public partial class view_diamond : System.Web.UI.Page
{
    public string id; 
    protected void Page_Load(object sender, EventArgs e)
    {
        //Label1.Text = Request.QueryString["diamond_id"];   
        if (!IsPostBack)
        {
            showData();
        }
    }
    protected void showData()
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["JemfindConnectionString"].ConnectionString);
        conn.Open();
        id = Request.QueryString["diamond_id"];  

        string sqlSelect = "SELECT * FROM diamond_detail WHERE final_diamond_id="+id;
        SqlCommand cmd = new SqlCommand(sqlSelect, conn);

        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);

        conn.Close();
    }
}

我想在 .aspx 页面的不同控件中使用不同的字段。
控件如:
默认.aspx

<asp:Label ID="diamond_carat_lbl" CssClass="diamond_carat_lbl" runat="server" Text=' ' ></asp:Label>

【问题讨论】:

  • “我想在整个 .aspx 页面中使用它的字段”是什么意思?请给我们更多的背景信息。
  • 意味着我不想将数据表与任何特定控件(如中继器)绑定。我想使用带有 .aspx 页面的任何控件的字段。
  • 为此有一堆数据绑定控件。 Repeater、datalist、datagrid、formview 等等。检查文档(这在所有地方都有很好的文档,我将从 www.asp.net 开始)并选择您认为最适合您需求的文档。 Microsoft 有一个学习 ASP 网站,其中包含有关这些控件的教程。

标签: c# asp.net


【解决方案1】:

所以您可能希望将查询结果的不同值绑定到某些标签或文本框?那应该行得通。是什么阻止您在代码后面这样做?

顺便说一句,您应该将SqlConnection 包装在using statement 中,因为它实现了IDisposable。即使出现错误,这也可以确保您的连接得到正确处理。而且您的代码很容易受到SQL Injection 攻击,因为您没有对查询进行参数化。

id = Request.QueryString["diamond_id"]; //Probably should use String.IsNullOrEmpty and display a message to the client if the parameter isn't here
var cmd = new SqlCommand("SELECT * FROM diamond_detail WHERE final_diamond_id=@id");
cmd.Paramaters.AddWithValue("id", id);
var dt = new DataTable();
using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["JemfindConnectionString"].ConnectionString));
{
    cmd.Connection = conn;
    conn.Open();  
    dt.Load(cmd.ExecuteReader()); //We eliminated the SqlDataAdapter
}
var record = dt.AsEnumerable().Single(); //retrieve one DataRow from DataTable
diamond_carat_lbl.Text = record.Field<string>("carats"); //Get the field called carats
diamond_name_lbl.Text = record.Field<string>("name");

【讨论】:

    猜你喜欢
    • 2021-09-30
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多