【发布时间】:2011-01-16 09:45:15
【问题描述】:
首先,我使用 MultiView 控件引导用户完成搜索。 MultiView 中的第一页只是一个搜索框,带有一个用于执行搜索的按钮。
第二个页面有 GridView,但我想保留搜索框和按钮,以便用户在没有找到他们正在寻找的用户时再次搜索。
当您从第一页搜索并移至第二页时,GridView 会显示正确的结果。但是,当它在 GridView 和搜索的第二页上时,GridView 不会更新。下面是我正在使用的代码。
//GridView = SearchResults
//SqlDataSource = AddPlayerDataSource
//MultiView = PlayerSearchView
protected void PlayerSearch_Click(object sender, ImageClickEventArgs e)
{
string userId = User.Identity.Name.ToString();
if (SearchText.Text != "" && !userId.Equals(""))
{
GridView SearchResults = (GridView)PlayerSearchView.FindControl("SearchResults");
string SqlSelect = "SELECT [id], [username] FROM [users] WHERE [username] LIKE '%" + SearchText.Text + "%'";
AddPlayerDataSource.SelectCommand = SqlSelect;
SearchResults.DataBind();
if (PlayerSearchView.ActiveViewIndex != 1)
PlayerSearchView.ActiveViewIndex = 1;
}
}
【问题讨论】:
-
这是一个奇怪的行为,我建议你尝试一个存储过程。
-
@nmiranda,这里是使用存储过程还是直接 SQL 没有区别。没有发生的是 ASP.NET 数据绑定。
-
@Eilon,对不起我的英语,我的意思是它发生在我身上,在我用谷歌搜索后,我发现很多人有同样的问题,他们使用存储过程修复了,我也是。这就是为什么我建议使用存储过程。
-
顺便说一句……这段代码看起来像是等待发生的 SQL 注入攻击。
-
是的,为了清楚起见,我以这种方式包含了 SQL。
标签: c# asp.net gridview data-binding