允许在没有viewstate的gridview上回发的最佳方法

时间:2012-04-16 15:55:20

标签: asp.net gridview postback viewstate

我的gridview基本上是一个结果的命中列表,用户从中选择一个,我希望得到一个回复​​,说明他选择了哪一个。网格内容不需要在回发往返中存活,因为一旦选择了项目,命中列表就会消失。

我不想使用viewstate,因为命中列表可能很大。我不想在PageLoad中从数据库中进行数据绑定以重新填充网格,因为搜索可能需要一段时间。

我现在想的是,我可以在'select'链接上放置一些javascript,将所选项目的ID存储在隐藏字段中,然后调用__doPostBack

这仍然看起来有点笨重。你能想到更清洁的方式吗?

2 个答案:

答案 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作为查询字符串变量。点击只会移动到下一页,不需要回发。