0

ここでは、Microsoft のウォークスルーを使用して、基本的な ASP.NET Web サイトを作成しました。テキスト入力を受け取り、それに基づいてデータベースクエリを実行し、結果をGridView. 検索結果が返されない場合にユーザーを明示的に表示するために、EmptyDataTextプロパティを myに追加しました。GridView

1 つの例外を除いて、すべて期待どおりに機能します。

IIS は、EmptyDataText「結果が見つかりませんでした」の my を表示します。検索フォームが送信される前であっても。

EmptyDataTextこれは、検索を取得してエーテルに投げ込むのではなく、Web ページが検索を正常に送信したが結果が見つからなかったことをユーザーに示すという、 使用の背後にある私の目的を無効にします。

たとえば、ユーザーが見つからないものを検索すると、「結果が見つかりませんでした」と表示されます。検索前と検索後の両方に表示されます。検索前に何も表示されず、「結果が見つかりませんでした」とは対照的です。後。前者の動作は、検索が機能しなかったという印象を与えます。

検索フォームが送信されたにのみGridView表示されるように設定するにはどうすればよいですか?EmptyDataText

4

4 に答える 4

2

ページのロード中に自動的にバインドするsqldatasourceを使用しています。検索ボタンをクリックしながら、プログラムでグリッドビューをバインドします

于 2012-06-06T05:09:26.010 に答える
1

ユーザーが検索を開始するまで、GridView をバインドしないでください。GridView を 0 レコードのデータソースにバインドすると、EmptyDataTextが表示されます。

Page_Load でバインドしている可能性があります。

編集

コード内で DataBind() が実行されている場所 (アクション ハンドラー以外) はすべて削除します。DataBind() は、ユーザー アクションを受け取るハンドラーでのみ発生する必要があります。

Visual Studio がバックグラウンドで自動バインドを行っている場合は、いつでもグリッドをデフォルトで非表示にすることができます。ユーザーが検索を開始したときに表示されるようにします。

于 2012-06-05T23:52:53.570 に答える
0

他の回答が示唆しGridViewているように、属性があるため、ユーザーが検索を行う前にバインドされていDataSourceIDます。MSDNで説明されているように、この属性により、GridView指定されたソースに自動的にバインドされます。

データ ソース コントロールにバインドするには、GridView コントロールの DataSourceID プロパティをデータ ソース コントロールの ID 値に設定します。GridView コントロールは、指定されたデータ ソース コントロールに自動的にバインドし、データ ソース コントロールの機能を利用して、並べ替え、更新、削除、およびページングを実行できます。これは、データにバインドするための推奨される方法です。

探していた動作を得るために、その属性を から削除しGridView、代わりOnClickに検索フォームの送信ボタンに属性を追加しました。このOnClick属性はBindGridView、ユーザーがフォームを送信したときにのみ呼び出されるメソッドを参照します。

このメソッドが行うのは、DataSourceID以前に属性として持っていたのと同じ値を に入力することだけです。

public void BindGridView(object sender, EventArgs e)
{
    GridView1.DataSourceID = "DataSourceID1";
}
于 2012-06-08T17:46:41.493 に答える
0

検索の前にデータバインドしないでください。それまでは完全に見えなくなります。

更新:おそらく、DataSourceID (自動的にデータバインドする) を使用していますか?

更新 2:まず、どのような理由で反対票が投じられたのでしょうか (少なくともコメントを残す良識があります)。私がいなかったら、OP はまだ問題がどこにあるかを認識していなかったでしょう。次に、DataSourceID宣言からプロパティを削除し、ユーザーが検索を行ったときにコードビハインドから戻します (GridView DataBind()メソッドを呼び出したい場合があります)。その後は手動で行いますが、それが自動的に行われない場合のみ - 最初に行わずに試してください)。

于 2012-06-05T23:59:46.227 に答える