0

ASP.NET c# でグリッドビューに取り組んでいます。グリッドビューに 4 つの TextBox がある場合

1st field - hire/month
2nd field - from date
3rd field - to date
4th field - required machine month

コンセプトはこんな感じ。

from_date と to_date の差は月単位で求める必要があり、required_machine_month フィールドを取得するには、雇用/月で乗算する必要があります。これについて私を助けてください。

私は JavaScript を知りませんが、ある関数の違いを取得し、その関数を別の関数に呼び出して乗算し、出力を取得することで、自分のレベルで最善を尽くしました。

しかし、JavaScript は完全に失敗し、機能していないようです。良いスクリプトを教えてください。

4

4 に答える 4

0
var DisplayTo = new Date();
var DisplayFrom = new Date("2012-03-05");

var diff = DisplayTo.getMonth() - DisplayFrom.getMonth() + (12 * (DisplayTo.getFullYear() - DisplayFrom.getFullYear()));
var machineMonth = hiremonth * diff;

これを試しましたか?

于 2013-02-05T11:38:52.427 に答える
0

グリッドで TemplateField を使用し、次のように textboxesclass属性を指定すると、JQuery を簡単な方法として使用できます。

<asp:TemplateField>
    <ItemTemplate>
        <input type="text" class="to-date"/>
    <ItemTemplate>
</asp:TemplateField>

そして、あなたがそのようなクラスを与えたと仮定してhire-month',ください,:,

<script type="text/javascript">
    $(document).ready(function(){
        $('.to-date, .from-date').change(function(){
            var required = $(this).parent().children('.required');
            var toDate = $(this).parent().children('.to-date').val();
            var fromDate = $(this).parent().children('.from-date').val();
            required.val(toDate + fromDate); //put your logic here
        });
    });
</script>
于 2013-02-05T11:31:42.720 に答える
0

計算された値を返すプロパティをクラスに作成し、そのプロパティをグリッドに配置できるため、Javascript は必要ありません。そのように:

   public string RequiredMachineMonth
   {
       get
       {
            return ... //Your logic based on 'to' and 'from' here
       }
   }
于 2013-02-05T11:20:45.207 に答える
0

助けてくれてありがとう..最後に、スクリプトが機能するようになりました。しかし、それは長いものです。誰でも使えるように以下に投稿します。誰かがはっきりしていない場合。Plsは私が何をしたかを伝えることができるように、お気軽にお尋ねください.

<script type="text/javascript" language="javascript">

function req_mac_month(numbers,fromDate,toDate,mcMonth)
{
    //alert("Executed");
    var reqnum=document.getElementById(numbers).value;
    var sdate=document.getElementById(fromDate).value;
    var edate=document.getElementById(toDate).value;
    //var diff=DisplayTo.getMonth() - DisplayFrom.getMonth() + (12 * (DisplayTo.getFullYear() - DisplayFrom.getFullYear()));
    //var diff=Math.ceil((DisplayTo.getTime()-DisplayFrom.getTime())/(1000*60*60*24));
    var day1, day2;
    var month1, month2;
    var year1, year2;
    //var noofmonths;
    day1 = sdate.substring(0, sdate.indexOf("-"));
    month1 = sdate.substring(sdate.indexOf("-") + 1, sdate.lastIndexOf("-"));
    year1 = sdate.substring(sdate.lastIndexOf("-") + 1, sdate.length);

    day2 = edate.substring(0, edate.indexOf("-"));
    month2 = edate.substring(edate.indexOf("-") + 1, edate.lastIndexOf("-"));
    year2 = edate.substring(edate.lastIndexOf("-") + 1, edate.length);

    date1 = year1 + "/" + month1 + "/" + day1;
    date2 = year2 + "/" + month2 + "/" + day2;

    firstDate = Date.parse(date1)
    secondDate = Date.parse(date2)

    msPerDay = 24 * 60 * 60 * 1000

    dbd = trunc(((Math.round(((secondDate.valueOf() - firstDate.valueOf()) / msPerDay) + 1))/30),4);
            reqmcmonthtotal = dbd * reqnum ;
            document.getElementById(mcMonth).value= reqmcmonthtotal;
    return true;      
}
</script>

コードビハインドでは...、

TextBox rnum = grvps.FooterRow.FindControl("Ftxteditreqnum") as TextBox;
TextBox fromDate = grvps.FooterRow.FindControl("txtFromDate") as TextBox;
TextBox toDate = grvps.FooterRow.FindControl("txtEndDate") as TextBox;
TextBox mcMonth = grvps.FooterRow.FindControl("Ftxteditreqmcmth") as TextBox;

string req_mac_month = string.Format("return req_mac_month('{0}','{1}','{2}','{3}');", rnum.ClientID, fromDate.ClientID, toDate.ClientID, mcMonth.ClientID);
rnum.Attributes.Add("onchange", req_mac_month);
fromDate.Attributes.Add("onchange", req_mac_month);
toDate.Attributes.Add("onchange", req_mac_month);
于 2013-02-07T05:15:12.197 に答える