0

私は現在、DateTime エントリを必要とする Web サイトを開発しており、日付と時刻の入力に使用される TextBox で MaskEdit エクステンダを使用しています。これらの DateTime は、同じページに (プレビュー用に) 表示する必要がある合計時間やその他のものを計算するための入力として使用されます。

ただし、MS AJAX を使用したポストバックの後、計算されたデータは表示されますが、DateTime エントリはクリアされます。.NET 2.0 で利用可能な最新の AjaxControlToolkit に更新する前は、ポストバック後にエントリが破損していました。ポストバックは LinkBut​​ton によってトリガーされます。その前に TextBox の AutoPostBack プロパティを使ってみました。

修正のためのアイデアはありますか、それとも MS AJAX を捨てて、ASP.NET 用または直接 JS 用の別の AJAX ライブラリの使用を開始することを検討する必要があります。

ターゲット サーバーが Windows 2000 を使用しているため、.NET 3.5 を使用できないことに注意してください.....

4

2 に答える 2

0

このエラーを再現できません。コードを投稿できますか?

編集:わかりました、いくつかの可能な解決策。

  1. 属性を使用する

    ClearTextOnInvalid="false"

MaskedEditExtenders で。これにより、入力された日付が無効な場合にページが消去されなくなります。

  1. Masked Edit Extender を使用してこれらのテキスト ボックスに値を割り当てていないことを確認してください。誤って無効な値を入力すると、それは受け入れられず、消去されます。

私が見つけた他の唯一の解決策は、MaskedEditExtender をまったく使用しないことです...

于 2009-06-12T13:46:27.470 に答える
0

もちろん

ASPX 部分:

  <td><asp:TextBox id="textBeginStation" runat="server"></asp:TextBox></td>
<td>
    <asp:TextBox ID="textBeginServiceDateTime" runat="server"></asp:TextBox>
    <ajaxToolkit:MaskedEditExtender
        ID="textBeginServiceDateTimeMaskedEditExtender" runat="server" 
        TargetControlID="textBeginServiceDateTime" MaskType="DateTime" 
        Mask="9999/99/99 99:99" UserDateFormat="YearMonthDay" 
        UserTimeFormat="TwentyFourHour">
    </ajaxToolkit:MaskedEditExtender>
</td>
<td>
    <asp:TextBox ID="textBeginStationDateTime" runat="server"></asp:TextBox>
    <ajaxToolkit:MaskedEditExtender
        ID="textBeginStationDateTimeMaskedEditExtender" runat="server" 
        TargetControlID="textBeginStationDateTime" MaskType="DateTime" 
        AutoComplete="False" Mask="9999/99/99 99:99" UserDateFormat="YearMonthDay" 
        UserTimeFormat="TwentyFourHour" EnableViewState="False">
    </ajaxToolkit:MaskedEditExtender>
</td>
<td><asp:TextBox ID="textBeginRemarque" runat="server"></asp:TextBox></td>

これは単なるサンプルで、残りはかなり似ています。これは、MS AJAX から UpdatePanel 内に含まれる UserControl の一部です。

LinkBut​​ton コード:

ProductionDependencyFactory depFactory = new ProductionDependencyFactory();
    try
    {
        DateTime beginServiceDateTime = DateTime.Parse(textBeginServiceDateTime.Text);
        DateTime beginStationDateTime = DateTime.Parse(textBeginStationDateTime.Text);
        DateTime endServiceDateTime = DateTime.Parse(textEndServiceDateTime.Text);
        DateTime endStationDateTime = DateTime.Parse(textEndStationDateTime.Text);

        NormalTrainTimeMilageCalculator calculator = depFactory.Create<NormalTrainTimeMilageCalculator>();

        calculator.BeginStation = textBeginStation.Text;
        calculator.BeginServiceDateTime = beginServiceDateTime;
        calculator.BeginStationDateTime = beginStationDateTime;
        calculator.EndStationDateTime = endStationDateTime;
        calculator.EndServiceDateTime = endServiceDateTime;
        calculator.EndStation = textEndStation.Text;

        labelTotalHour.Text = calculator.TotalTime().Hours.ToString();
        labelTotalMinute.Text = calculator.TotalTime().Minutes.ToString();
        labelTotalMilage.Text = calculator.TotalMilage().ToString();
    }
    catch (Exception)
    {
        // Do nothing
    }
于 2009-06-12T14:15:44.077 に答える