2016-09-23 7 views
1

次のImageButtonがあります。これは、カレンダーコントロールの可視性プロパティを切り替えるものです。ImageButtonをクリックしたときにC#メソッドを実行してポストバックを行うことができません

<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/calendar.png" OnClick="Display_Calendar1"/> 

問題をクリックすると、私の他のコードのいくつかと競合するポストバックコマンドが送信されます。私は、最も一般的な解決策が「偽を返す」ということについて、これに関する複数のスレッドがあることを見てきました。 OnClickイベントについて説明します。前に、関数が走った私が見てきたすべての例では

//cStart_Date is the calendar control and tbStart_Date is a textbox where I write down the chosen date. 
protected void Display_Calendar1(object sender, ImageClickEventArgs e) 
{ 
    if (IsValidDate(tbStart_Date.Text)) 
    { 
     cStart_Date.SelectedDate = Convert2Date(tbStart_Date.Text); 
     cStart_Date.VisibleDate = cStart_Date.SelectedDate; 
    } 
    cStart_Date.Visible = !cStart_Date.Visible; 
} 

「return false;」を:しかし、私はまだカレンダートグル方法を実行する必要がありますJavaScript関数ですが、私はC#メソッドを実行したいです。保護CS1026 :)が

を期待私はまた、引数なしの方法を試してみたのボイドDisplay_Calendar1()が、結果は次のとおりです。これは私がブラウザ上でそれを起動すると コンパイラエラーメッセージを表示し、サーバーのエラーになります同じ...

+0

C#メソッドを実行するには、C#メソッドがサーバー上で実行されているため、* something *をサーバーに送信する必要があります。どのような質問が正確であるかを明確にすることはできますか? Webアプリケーションの実行方法とその実行場所について少し混乱しているようですね。 –

+0

つまり、ImageButtonをクリックすると、カレンダーコントロールが表示されます(隣接するテキストボックスに有効な日付文字列がある場合は、選択した日付で表示されます)。私はこれをPage_Load(IsPostback)をトリガーすることなくやりたがっています。 – Innat3

答えて

0

明らかにサーバー側Clickイベントの実行時にポストバックを避けることはできません。。 updatePanelは、レンダリングの負荷を最小限に抑え、ページのちらつきを最小限に抑えますが、ポストバックコールが残っているため、私の目的を破ります。私はクライアント側でjavascriptでそれをやっているのは唯一の方法だと思います。

1

カレンダーコントロールの切り替えは、Javaスクリプトでも行うことができます。イメージボタンのOnClientClickプロパティを使用する必要があります。

<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/calendar.png" OnClientClick="ToggleCalendar"/> 

<script> 
function ToggleCalendar() { 
    var clndr= document.getElementById('cStart_Date'); 
    clndr.style.display = (clndr.style.display == 'none') ? 'block' : 'none'; 
} 
</script> 

Javaスクリプトの機能でも、検証などを行うことができます。

+0

私はjavascriptを使った完全な初心者です。あなたのようにelementidでカレンダーコントロールを切り替えることができましたが、selectedDate、visibleDate 、または別の日時フォーマットを管理するために私が作ったdateconversionメソッドを使用して – Innat3

+0

Np .. :) Googleはあなたの問題を一つ一つ解決することができます。 document.getElementByIdは、任意のコントロールに到達するための基本です。その後、そのプロパティにアクセスできます。 –

+0

私の質問のポイントは、別の方法があるかどうかを調べ、javascriptを使用する必要がないようにすることです。 – Innat3

関連する問題