0

私のグリッドビューは基本的に、ユーザーが1つを選択した結果のヒットリストであり、ユーザーがどちらを選択したかを示すポストバックを取得したいと思います。アイテムを選択するとすぐにヒットリストが表示されなくなるため、グリッドコンテンツがポストバックラウンドトリップを生き残る必要はありません。

ヒットリストが大きくなる可能性があるため、viewstateは使用しません。検索に時間がかかる場合があるため、PageLoadのデータベースからデータバインドしてグリッドを再作成したくありません。

私が今考えているのは、「選択」リンクにJavaScriptを配置して、選択したアイテムのIDを非表示フィールドに保存し、__doPostBackを呼び出すことができるということです。

これはまだ少し不格好なようです。よりクリーンな方法を考えられますか?

4

2 に答える 2

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);
    }
}
于 2012-04-16T16:06:09.047 に答える
0

選択したアイテムのIDは、ユーザーに表示されるべきではない機密情報ですか?

そうでない場合は、IDをクエリ文字列変数として使用して、選択ボタンを次のページへのリンクにすることができます。クリックすると次のページに移動するだけで、ポストバックは必要ありません。

于 2012-04-16T16:15:36.920 に答える