【发布时间】:2010-11-13 11:31:00
【问题描述】:
我有一个奇怪的问题。我在 C#/ASP.NET 中的查询返回结果 5 次。我尝试了刹车点,但我找不到错误。我有 2 个相关的表。一个表在 PAGE_LOAD 上加载,当用户单击一个单元格时,它会显示与该单元格相关的另一个表中的内容。很简单。
//PAGE LOAD
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbpath + "/secure_user/data/data.mdb");
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT Project,Manager,Customer,Deadline FROM projects WHERE Username='" + uname + "'", myConnection);
DataTable table = new DataTable();
adapter.Fill(table);
adapter.Dispose();
GridView1.DataSource = table;
GridView1.DataBind();
}
}
它将项目表加载到 GridView。现在,当我单击某个项目时,它会显示有关该项目的更多信息:
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { GridViewRow row = GridView1.SelectedRow; Label1.Text = row.Cells[1].Text;
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbpath + "/secure_user/data/data.mdb");
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT tasks.Task,tasks.Priority,tasks.Done,taska.Hours FROM projects,tasks WHERE tasks.Username='" + uname + "' AND tasks.Project='" + Label1.Text + "'", myConnection);
DataTable table = new DataTable();
adapter.Fill(table);
adapter.Dispose();
GridView2.DataSource = table;
GridView2.DataBind();
GridView2.Visible = true;
}
它显示没有错误,但无论我从 GridView1 中选择什么项目,它都会显示 5 次,它总是连续显示 GridView2(第二个表)内容 5 次。可能是什么问题?
【问题讨论】:
-
第二个 SELECT 语句 (taska) 中似乎有错字。
-
顺便说一句,这种查询很容易成为脚本攻击的目标;请不要使用未经验证的页面可编辑字段内容。
-
有人需要阅读关于小圆桌的文章...