我的gridview基本上是一个结果的命中列表,用户从中选择一个,我希望得到一个回复,说明他选择了哪一个。网格内容不需要在回发往返中存活,因为一旦选择了项目,命中列表就会消失。
我不想使用viewstate,因为命中列表可能很大。我不想在PageLoad中从数据库中进行数据绑定以重新填充网格,因为搜索可能需要一段时间。
我现在想的是,我可以在'select'链接上放置一些javascript,将所选项目的ID存储在隐藏字段中,然后调用__doPostBack
这仍然看起来有点笨重。你能想到更清洁的方式吗?答案 0 :(得分:2)
如果在用户单击行中的任何位置时应触发回发,请使用ItemDataBound
事件附加客户端onclick
处理程序:
protected void GridView1_ItemDataBound(object sender, GridViewRowEventArgs e)
{
var dataItem = e.Item as GridViewRow;
if (dataItem != null)
{
dataItem.Attributes["onclick"] = string.Format("__doPostBack(this, '{0}')", e.Row.RowIndex);
}
}
答案 1 :(得分:0)
所选项目的ID是否敏感,用户不应该看到它?
如果不是,您可以将选择按钮设为指向下一页的链接,并将ID作为查询字符串变量。点击只会移动到下一页,不需要回发。