c# - 如何计算asp.net gridview itemtemplate文本框中的javascript中两个日期之间的天数

标签 c# javascript asp.net gridview

我有一个如下图所示的 GridView :

gridview

我在 GridView 的 ItemTemplate 中有文本框。我想计算两个日期之间的天数,并用该值填充最后一个文本框。我可以在 OnTextChanged 事件中执行此操作,但我不想回发。请让我如何使用 javascript 函数?(传递文本框值并填充文本框)

                <asp:TemplateField HeaderText="Date of Submission for Xerox review" HeaderStyle-BackColor="#1B7AE0" HeaderStyle-Font-Size="10"> 
                <EditItemTemplate> 
              <asp:TextBox ID="IDDtXerox" Text='<%# Eval("Date_Xerox_Review") %>' BorderWidth="1" runat="server"></asp:TextBox>
                            <ajaxToolkit:CalendarExtender ID="CalendarExtender3" runat="server"  Format="dd/MM/yyyy"

                                        TargetControlID="IDDtXerox" /> 
            </EditItemTemplate> 
            <FooterTemplate> 
              <asp:TextBox ID="txtNewIDDtXerox" BorderWidth="1" runat="server"></asp:TextBox> 
               <ajaxToolkit:CalendarExtender ID="CalendarExtender4" runat="server" Format="dd/MM/yyyy"

                                        TargetControlID="txtNewIDDtXerox" /> 
              </FooterTemplate> 
            <ItemTemplate> 
              <asp:Label ID="lblIDDtXerox" Font-Size="Smaller" Text='<%# Bind("Date_Xerox_Review") %>' runat="server"></asp:Label> 
            </ItemTemplate> 

            <HeaderStyle BackColor="#1B7AE0" Font-Size="10pt"></HeaderStyle>
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Date of ID Acceptance/Rejection" HeaderStyle-BackColor="#1B7AE0" HeaderStyle-Font-Size="10"> 
                <EditItemTemplate> 
              <asp:TextBox ID="IDDtAccRej" Text='<%# Eval("Date_Acceptance_Rejection") %>' BorderWidth="1" runat="server"></asp:TextBox>
                <ajaxToolkit:CalendarExtender ID="CalendarExtender5" Animated="true"  runat="server" Format="dd/MM/yyyy" TargetControlID="IDDtAccRej" /> 
            </EditItemTemplate> 
            <FooterTemplate> 
              <asp:TextBox ID="txtNewIDDtAccRej" BorderWidth="1" AutoPostBack="true" OnTextChanged="txtNewIDDtAccRej_TextChanged" runat="server"></asp:TextBox> 
               <ajaxToolkit:CalendarExtender ID="CalendarExtender6" runat="server" Format="dd/MM/yyyy" TargetControlID="txtNewIDDtAccRej" /> 
              </FooterTemplate> 
            <ItemTemplate> 
              <asp:Label ID="lblIDDtAccRej" Font-Size="Smaller" Text='<%# Bind("Date_Acceptance_Rejection") %>' runat="server"></asp:Label> 
            </ItemTemplate> 
            <HeaderStyle BackColor="#1B7AE0" Font-Size="10pt"></HeaderStyle>
            </asp:TemplateField> 

                 <asp:TemplateField HeaderStyle-BackColor="#1B7AE0" HeaderStyle-Font-Size="10" HeaderText="ID Process Cycle Time (Weekdays)">
                <EditItemTemplate>  
               <asp:TextBox ID="txtProcessTime" BackColor="#E3C5AF" Text='<%# Eval("ID_Process_Time") %>' ReadOnly="true" Width="50px" BorderWidth="1" runat="server"></asp:TextBox>
            </EditItemTemplate> 
            <FooterTemplate> 
              <asp:TextBox ID="txtNewProcessTime" BackColor="#E3C5AF" ReadOnly="true" Width="50px" BorderWidth="1" runat="server"></asp:TextBox> 
              </FooterTemplate> 
            <ItemTemplate> 
              <asp:Label ID="lblNewProcessTime" Font-Size="Smaller" Text='<%# Bind("ID_Process_Time") %>' runat="server"></asp:Label> 
            </ItemTemplate> 
            <HeaderStyle BackColor="#1B7AE0" Font-Size="10pt"></HeaderStyle>
            </asp:TemplateField> 

请帮忙吗?

最佳答案

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <script type="text/javascript">
            function calculateDifference()
            {
                var startDate = document.getElementById("start_date").value;

                if(startDate == "")
                {
                    alert("Enter start date");
                    return;
                }
                var endDate = document.getElementById("end_date").value;
                if(endDate == "")
                {
                    alert("Enter end date");
                    return;
                }

                var startDateSplit = startDate.split("/");
                var endDateSplit = endDate.split("/");

                var stDate = new Date(startDateSplit[2], startDateSplit[0]-1, startDateSplit[1]);
                var enDate = new Date(endDateSplit[2], endDateSplit[0]-1, endDateSplit[1]);


                var difference = (enDate.getTime() - stDate.getTime())/(1000*60*60*24);

                document.getElementById("date_difference").value = difference;
            }
        </script>
    </head>
    <body>
        <table>
            <tr>
                <td>
                    <input type="text" name="start_date" id="start_date" onchange="calculateDifference()" />
                </td>
                <td>
                    <input type="text" name="end_date" id="end_date" onchange="calculateDifference()" />
                </td>
                <td>
                    <input type="text" name="date_difference" id="date_difference" />
                </td>
            </tr>
        </table>
    </body>
</html>

关于c# - 如何计算asp.net gridview itemtemplate文本框中的javascript中两个日期之间的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9205782/

相关文章:

c# - ASP.NET Identity Custom PasswordValidator 检查用户名

c# - C# 中 override 和 virtual 的使用 vs. Java 方法覆盖

javascript - one() 触发多次

javascript - 根据父宽度定位绝对顶部属性

javascript - 如何像在 Javascript 中一样调用 Python 函数

c# - 使用更新面板来防止 RadUpload 控件的回发

c# - 如何在 ASP.NET Web 服务中接收 XML?

c# - ASP.NET MVC 中的 session 本地存储或服务器端 session ?

c# - Visual Studio 2010 和 FoxPro 9.0 运行时错误 : "Feature is not available."

c# - 无法将类型为 'System.Int32' 的对象转换为 DataReader.GetString() 中的类型 'System.String'