2012-02-17 25 views
6

これは取引です。 C#バックエンドを使用してASP.NET WebFormsを使用して機能するWebアプリケーションを作成してください。物事は正常に動作しますが、私は常にこのものの初心者として、改善するために探しています。今のところ、結果なしで戻ってくるユーザーの検索に対処するために、私は次のことを利用し、今後の参考のために、それを行うには任意のクリーンな方法があったかと思いまして:検索結果が表示されないときにポップアップを投げる

DataClass data = new DataClass(); 
var searchresults = data.GetData(searchBox.Text); 
int datanumber = searchresults.Count(); 
if (datanumber == 0) 
{ 
    ClientScript.RegisterStartupScript(this.GetType(), "alert", "javascript:alert('There were no records found to match your search');", true); 
} 
else 
{ 
    DropDownList1.Visible = true; 
    DropDownList1.Items.Clear(); 
    DropDownList1.DataSource = searchresults; 
    DropDownList1.DataBind(); 
} 
+9

、私はむしろ、ページが何があったことを言わないだろうポップアップではなく、結果(多分赤いフォントで表示されるため) –

+0

実際に私は私のページを離れようとしない限りユーザーと話しているときにアラートを使用することを好まず、データが失われることを確認する必要があります。 ほとんどの場合、素晴らしいメッセージでdivを表示するか、結果が見つからないというアニメーションdivを表示するだけです。 – Songo

+1

@JustinSteranko - たとえば、jqueryポップアップを使用してポップアップをきれいにすることができます。個人的に、私はポップアップが迷惑で、Mike Chrstensenと同意します。 –

答えて

0

私が使用していないポップアップに同意するので、あなたは常にあなたのページにラベルオブジェクトを持つような単純な何かができる:

<asp:Label runat="server" id="lblResultMsg" ForeColor="Red" Visible="False" /> 

そして動的にテキストを設定(またはコードのプロパティとして追加)し、何も結果が見つからない場合は、ポストバックに表示されるようにラベルを設定:

if (datanumber == 0) 
{ 
    lblResultMsg.Text = "There were no records found to match your search."; 
    lblResultMsg.Visible = true; 
} 
else 
{ 
    lblResultMsg.Text = ""; 
    lblResultMsg.Visible = false; 

    // do your data binding 
} 

しかし、いくつかの方法は非常に膨大な数がありますこのようなことを達成することができます。 Enumerableコレクションから.Countを使用することについてのあなたの質問に関しては、これを完全に有効にするために何もしていません。問題は、どちらの方法がより読みやすいと思いますか?

0

あなたはjqueryのUIが含まれている場合ダイアログ(http://jqueryui.com/demos/dialog/)、あなたは単に素敵なダイアログボックスを作成するには、これを呼び出すことができます。

$('<div>message</div>').dialog({autoOpen:true,title:'Error'}); 
0

個人的に私はに関連するJavaScriptを挿入するためのヘルパー関数を作成することを好みます私は毎回乱雑な細部について心配する必要がないように、関数にパラメータを渡すだけです。以下のような

何か:

public static void GrowlMessage(System.Web.UI.Control pageControl, string header = "", string message = "", bool sticky = false, string position = "top-right", string theme = "", bool closer = true, int life = 8) 
{ 
    string _js = "$.jGrowl('" + HttpContext.Current.Server.HtmlEncode(message) + "', { header:'" + header + "', sticky:" + sticky.ToString().ToLower() + ", position: '" + position + "', theme: '" + theme + "', closer: " + closer.ToString().ToLower() + ", life:" + life * 1000 + "});"; 
    ScriptManager.RegisterStartupScript(pageControl, pageControl.GetType(),"Growl",_js, true);    
} 

私が使用しているサンプルもjQueryhere利用可能jGrowlライブラリが必要です。そしてIMHOメッセージはきれいです。彼らは邪魔にならず、ユーザーはボタンをクリックして離れさせる必要はなく、指定した時間が経過すると消えます。

しかし、レコードがない場合は、GridView(EmptyDataRowStyleとEmptyDataRowText)の組み込みのプロパティを使用して、「クエリと一致するデータがありません」というスタイルメッセージを表示する必要があります。

+0

最終的には、gridviewに渡されますが、最初にドロップダウンリストに2次フィルタとして渡されます。これは、エンドユーザーが慣れ親しんだ他のWebアプリケーションの一部と一致するようにするためです –

0

アラートを介してユーザに警告することを決定した場合は、ライトボックスの効果を進めるくださいが...

http://www.designyourway.net/blog/resources/30-efficient-jquery-lightbox-plugins/

あなたはまだあなたのために、明らかにその簡単なその後、伝統的な警告を進めて行きたいと考えている場合> ....「)」..むしろそれにスクリプトを取り付けるよりも、ページのロードに

を、それを起動するには、あなたがどんな変更が必要な場合ので、あなたは言葉だけではJavaScriptを変更する必要があり、あなたが必要性をいけませんビルドするもう一度プロジェクトをテストしてください。

注:私は、従来のASPコーディングを忘れていたので、私は5月のコーディングは変更を必要と上記のように、コンテンツをレンダリングするために自分のDLLを使用しています。.. :)個人的に

関連する問題