【发布时间】:2015-08-08 15:45:04
【问题描述】:
我在 Visual Studio 中遇到了一个有趣的问题(可能是由于我缺乏经验)。我有一个 SqlDataSource 对象和一个 GridView 对象。 Gridview 对象设置为使用 SqlDataSource 作为源。
SqlDataSource 使用参数(Source = Control,它是一个文本框)作为输入传递给 SQL 存储过程以返回记录集。当我单步执行代码时,在更改到文本框时,我执行SqlDataSource.Insert(),然后执行GridView.DataBind()。
由于我遇到了无法获得预期结果的问题,因此我在 SQL Server Profiler 中运行了一个恍惚状态。
好像SqlDataSource.Insert()运行时,通过参数传递了一个空值。当GridView.DataBind()在下一行运行时,参数值正确传递。
任何想法可能导致这种情况?我相信我在这里做错的任何事情也会影响我代码的其他领域。
protected void ItemBox_TextChanged(object sender, EventArgs e)
{
if(setFire)
{
SqlDataSource1.Insert();
GridView1.DataBind();
Label1.Text = GridView1.Rows.Count.ToString() + " Results Found";
Label2.Text = ItemBox.Text;
setFire = false;
ItemBox.Text = "";
ItemBox.Focus();
setFire = true;
}
}
【问题讨论】:
-
为什么我们在这里有 SqlDataSource.Insert,我没有看到任何数据库插入的东西。 ?
-
老实说,我只是想执行存储过程。我想我需要使用 .Insert() 因为我正在尝试将参数值推送到存储过程。
-
为此添加一点。我有第二个返回输出参数的 SqlDataSource。我也在尝试执行它,但是我遇到了与此处通过 NULL 相同的问题。
标签: c# asp.net visual-studio gridview sqldatasource