0

我正在研究 ASP.NET c# 中的网格视图。在gridview中如果有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

您可以在您的类中创建一个返回计算值的属性并将该属性放在网格中,因此不需要 Javascript。像那样:

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

如果您在网格中使用 TemplateField 并提供如下文本框class属性,则可以使用 JQuery 作为一种简单的方法:

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

并假设你已经给出了这样的类:hire-month',to-date ,from-date ,required` 然后在 jquery 中使用类似的东西

<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
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

感谢您的所有帮助.. 最后我得到了脚本工作。但它很长。我把它贴在下面供任何人使用。如果有人不清楚。请随时询问,以便我可以告诉我我做了什么。

<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 回答