Старение (разница между двумя датами на основе логики) значение, которое будет храниться во время выполнения
Может ли кто-нибудь помочь мне сохранить значение старения во время выполнения ?
Я собираюсь отправить свой код здесь, а перед этим я хотел бы кратко рассказать вам о сетке.
когда я введите дату Вале в сети и старение становится рассчитывается при вводе кнопку Сохранить/добавить новую строку кнопки, однако я заявил старения, как Стинг и инициализировать значение как 0, поэтому изначально значение 0 вам сохранить первый раз, когда я нажимаю на кнопку Сохранить но значение выдержки вам рассчитали на уровне страницы, когда снова нажмите на кнопку Сохранить/добавить новые кнопки вам сохранить расчетную старения значение в ДБ.
Исходный код для .страница ASPX
<tr> <td align="left"> <asp:Panel runat="server" ID="Panel1" Visible="true"> <table width="1050px"> <tr> <td align="center"> MOC : <asp:Label runat="server" ID="lblmocnofordisplay" Text="" Font-Size="Small"></asp:Label> </td> </tr> <tr> <td align="center"> <asp:Label ID="lblDisRemarks" runat="server"></asp:Label> </td> </tr> <tr> <td> <cc1:CollapsiblePanelExtender ID="CollapsiblePanelExtender1" runat="Server" TargetControlID="pnlRemarks" Collapsed="false" ExpandControlID="lblRemarks_Header" CollapseControlID="lblRemarks_Header" AutoCollapse="False" AutoExpand="False" TextLabelID="lblRemarks_Header" CollapsedText="Show Discipline Remarks..." ExpandedText="Hide Remarks..." ImageControlID="Image1" ExpandDirection="Vertical" /> <fieldset runat="server" id="Fieldset1" style="border: medium solid #000080; margin: 5px;"> <legend style="border: 2px outset #FFFFFF; margin: 5px;"> <asp:Label ID="lblRemarks_Header" runat="server" Text="Discipline Remarks" BorderColor="Navy"></asp:Label> </legend> <asp:Panel ID="pnlRemarks" runat="server" Width="1050px" Visible="false"> <table width="100%"> <tr> <td width="30%" align="left"> Engineering Completed </td> <td width="30%" align="left"> Balance To Go </td> <td width="30%" align="left"> Need List </td> </tr> <tr> <td> <asp:TextBox ID="txtEngCompleted" runat="server" TextMode="MultiLine" Height="60px" Width="90%"></asp:TextBox> </td> <td> <asp:TextBox ID="txtBalToGo" runat="server" TextMode="MultiLine" Height="60px" Width="90%"></asp:TextBox> </td> <td> <asp:TextBox ID="txtNeedList" runat="server" TextMode="MultiLine" Height="60px" Width="90%"></asp:TextBox> </td> </tr> <tr> <td align="left"> Lead </td> <td align="left"> RE </td> <td align="left"> MOC Stage </td> </tr> <tr> <td> <asp:DropDownList ID="ddlLead" runat="server"> </asp:DropDownList> </td> <td> <asp:TextBox ID="txtLeadMgr" onkeypress="javascript:return UpperCase();" runat="server" TextMode="SingleLine" MaxLength="40"></asp:TextBox> </td> <td align="left"> <asp:DropDownList ID="ddlMOCStage" runat="server"> </asp:DropDownList> </td> </tr> <tr> <td align="left" colspan="3" style="width: 950px"> <asp:GridView ID="grdRemarks" runat="server" AutoGenerateColumns="False" AllowPaging="false" Font-Names="Calibri" Font-Size="Small" OnRowDeleting="grdRemarks_RowDeleting" OnRowDataBound="grdRemarks_RowDataBound" Width="1050px"> <Columns> <asp:TemplateField HeaderText="Date of Entry" ItemStyle-Wrap="false"> <ItemTemplate> <asp:HiddenField ID="hdnNeed_List_Id" runat="server" Value='<%# Eval("Need_List_Id")%>'></asp:HiddenField> <asp:Label ID="lblEnterDate" runat="server" Text='<%# (Eval("Entered_Date") != null && Eval("Entered_Date") is DateTime) ? Convert.ToDateTime(Eval("Entered_Date")).ToString("dd MMM yy") : DateTime.Now.ToString("dd MMM yy") %>' Width="70px"></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Category" ItemStyle-HorizontalAlign="Left" ItemStyle-VerticalAlign="Middle"> <ItemTemplate> <asp:HiddenField ID="hdnNeedList_Name" runat="server" Value='<%# Eval("Need_List_Name")%>'></asp:HiddenField> <asp:DropDownList ID="drpNeedList" runat="server" Font-Names="Calibri" ClientIDMode="Static" name="drpNeedList" AutoPostBack="false" Width="120px"> </asp:DropDownList> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Description" ItemStyle-HorizontalAlign="Left" ItemStyle-VerticalAlign="Middle"> <ItemTemplate> <asp:TextBox ID="txtNeedDescription" runat="server" Width="400px" Text='<%#DataBinder.Eval(Container, "DataItem.Need_List_Description")%>'></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Action By" ItemStyle-HorizontalAlign="Left" ItemStyle-VerticalAlign="Middle"> <ItemTemplate> <asp:TextBox ID="txtActionBy" runat="server" Text='<%#DataBinder.Eval(Container, "DataItem.Action_By")%>'></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Aging" ItemStyle-HorizontalAlign="Left" ItemStyle-VerticalAlign="Middle"> <ItemTemplate> <asp:Label ID="lblAging" runat="server" Text='<%#DataBinder.Eval(Container, "DataItem.Aging_Days")%>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Expected Date" ItemStyle-HorizontalAlign="Left" ItemStyle-VerticalAlign="Middle"> <ItemTemplate> <asp:HiddenField ID="hdnExpectedDate" runat="server" Value='<%#DataBinder.Eval(Container, "DataItem.EXPECTED_DATE") %>'></asp:HiddenField> <telerik:RadDatePicker ID="dtExpectedDate" runat="server" DateInput-DateFormat="dd MMM yyyy" Width="100px" Font-Names="Calibri"> </telerik:RadDatePicker> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Completion Date" ItemStyle-HorizontalAlign="Left" ItemStyle-VerticalAlign="Middle"> <ItemTemplate> <asp:HiddenField ID="hdnCompletion_Date" runat="server" Value='<%#DataBinder.Eval(Container, "DataItem.Completion_Date") %>'></asp:HiddenField> <telerik:RadDatePicker ID="dtCompletion_Date" runat="server" DateInput-DateFormat="dd MMM yyyy" Width="100px" Font-Names="Calibri"> </telerik:RadDatePicker> </ItemTemplate> </asp:TemplateField> <asp:ButtonField CommandName="Delete" Text="Delete" /> </Columns> <HeaderStyle BackColor="Khaki" /> </asp:GridView> </td> </tr> <tr> <td align="center" colspan="4"> <asp:Button ID="btnAddNewNeed" runat="server" Text="Add New Need List" OnClick="btnAddNewNeed_Click" ValidationGroup="SaveRemark" /> <asp:Button ID="btnSaveRemarks" runat="server" Text="Save" OnClick="btnSaveRemarks_Click" /> </td> </tr> </table> </asp:Panel> </fieldset> </td> </tr>
КОД C#
using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using DAL; using Telerik.Web.UI; <pre>public partial class Frm_T_Deliverable : System.Web.UI.Page { #region Private Variables DataTable dtNeedList = new DataTable(); classforcommon c = new classforcommon(); DataTable dtDCN = new DataTable(); DataTable dtDCN_Del = new DataTable(); MOC m = new MOC(); MOC _obj = null; protected void Page_Load(object sender, EventArgs e) { //Un comment while deploying _obj = new MOC(); if (Request.ServerVariables["HTTP_REFERER"] == null) { // Response.Redirect("http://realnet.in.ril.com/Realnet/aspx/mypage.aspx"); } if (Session["role"] != null) { if (Session["role"].ToString() != "Lead Engineer" && Session["role"].ToString() != "Admin") { Response.Redirect("Unauthorized_Page.aspx"); } string discp = Session["DisciplineId"].ToString(); if (discp == "2") { lblDeliverables_Header.Text = "Deliverables (Not Part of DCN)"; } else { lblDeliverables_Header.Text = "Deliverables"; } Session["DisciplineId"] = discp; // SqlDataSource1.SelectParameters["DisciplineId"].DefaultValue = discp; } else { // Response.Redirect("http://realnet.in.ril.com/Realnet/aspx/mypage.aspx"); } if (!IsPostBack) { ddljob.DataSource = c.bindjobdropdown(); ddljob.DataBind(); rcbREIMS.DataSource = c.bindReimsDropdown("", "", ""); rcbREIMS.DataBind(); Fill_Lead_1(); Fill_MOC_Stage(); btnFetch_Click(sender, e); } lblMsg.Text = ""; lblMsgDCN.Text = ""; lblMsgDCN_Del.Text = ""; lblDisRemarks.Text = ""; }
protected void btnAddNewNeed_Click(object sender, EventArgs e) { try { btnSaveRemarks_Click(sender, e); dtNeedList = (DataTable)ViewState["Record_need"]; DataRow dr = dtNeedList.NewRow(); dtNeedList.Rows.Add(dr); grdRemarks.DataSource = dtNeedList; grdRemarks.DataBind(); if (grdRemarks.Rows.Count > 0) { ViewState["Record_need"] = dtNeedList; } } catch (Exception ex) { clsCommon.SetMessage(lblMsg, ex.Message + Environment.NewLine + ex.StackTrace, false); } }
protected void Bind_NeedList_Dropdown(object sender, GridViewRowEventArgs e) { try { Label lblAging = (Label)(e.Row.FindControl("lblAging")); Label lblEnterDate = (Label)(e.Row.FindControl("lblEnterDate")); RadDatePicker dtExpected_Date = (RadDatePicker)(e.Row.FindControl("dtExpectedDate")); HiddenField hdnExpectedDate = (HiddenField)(e.Row.FindControl("hdnExpectedDate")); RadDatePicker dtCompletion_Date = (RadDatePicker)(e.Row.FindControl("dtCompletion_Date")); HiddenField hdnCompletion_Date = (HiddenField)(e.Row.FindControl("hdnCompletion_Date")); string strAge = "0"; if (!String.IsNullOrEmpty(hdnCompletion_Date.Value)) { strAge = (Convert.ToDateTime(hdnCompletion_Date.Value).Date - Convert.ToDateTime(lblEnterDate.Text)).TotalDays.ToString(); } else if (hdnExpectedDate.Value.ToString() != "") { strAge = (Convert.ToDateTime(hdnExpectedDate.Value) - DateTime.Now.Date).TotalDays.ToString(); } lblAging.Text = strAge; DateTime dt = DateTime.Now; if (DateTime.TryParse(hdnExpectedDate.Value, out dt)) { dtExpected_Date.SelectedDate = dt; } if (DateTime.TryParse(hdnCompletion_Date.Value, out dt)) { dtCompletion_Date.SelectedDate = dt; } DropDownList drpNeedList = (DropDownList)(e.Row.FindControl("drpNeedList")); if (drpNeedList != null) { DataSet ds = c.BindNeedListDropDown(); if (ds != null && ds.Tables.Count != 0 && ds.Tables[0] != null && ds.Tables[0].Rows.Count != 0) { DataRow dr = ds.Tables[0].NewRow(); dr["Need_List_Name"] = "--Select--"; dr["Need_List_Name"] = "--Select--"; ds.Tables[0].Rows.Add(dr); drpNeedList.DataTextField = "Need_List_Name"; drpNeedList.DataValueField = "Need_List_Name"; drpNeedList.DataSource = ds.Tables[0]; drpNeedList.DataBind(); string drpValue = (e.Row.FindControl("hdnNeedList_Name") as HiddenField).Value; ListItem li = null; drpNeedList.ClearSelection(); li = drpNeedList.Items.FindByText(drpValue != string.Empty ? drpValue : "--Select--"); if (li != null) { li.Selected = true; } } } } catch (Exception ex) { clsCommon.SetMessage(lblMsg, ex.Message + Environment.NewLine + ex.StackTrace, false); } }
private DataTable Regenerate_Need_DataTable() { dtNeedList = ((DataTable)ViewState["Record_need"]).Clone(); for (int i = 0; i <= grdRemarks.Rows.Count - 1; i++) { HiddenField hdnNeed_list_Id = (HiddenField)(grdRemarks.Rows[i].FindControl("hdnNeed_List_Id")); Label lblEntered_Date = (Label)(grdRemarks.Rows[i].FindControl("lblEnterDate")); DropDownList drpNeedList = (DropDownList)(grdRemarks.Rows[i].FindControl("drpNeedList")); TextBox txtNeedDescription = (TextBox)(grdRemarks.Rows[i].FindControl("txtNeedDescription")); TextBox txtActionBy = (TextBox)(grdRemarks.Rows[i].FindControl("txtActionBy")); Label lblAging = (Label)(grdRemarks.Rows[i].FindControl("lblAging")); RadDatePicker dtExpectedDate = (RadDatePicker)grdRemarks.Rows[i].FindControl("dtExpectedDate"); RadDatePicker dtCompletion_Date = (RadDatePicker)grdRemarks.Rows[i].FindControl("dtCompletion_Date"); DataRow dr = dtNeedList.NewRow(); if (!String.IsNullOrEmpty(hdnNeed_list_Id.Value)) { dr["Need_List_Id"] = hdnNeed_list_Id.Value; } else { dr["Need_List_Id"] = -1; } dr["Need_List_Name"] = drpNeedList.Text; dr["MOC_ID"] = Convert.ToInt32(ViewState["MOCID"]); dr["Discipline_ID"] = Convert.ToInt32(ViewState["DISCID"]); dr["Need_List_Description"] = txtNeedDescription.Text; dr["Action_By"] = txtActionBy.Text; dr["Aging_Days"] = lblAging.Text; if (lblEntered_Date.Text == string.Empty) { dr["Entered_Date"] = DBNull.Value; } else { dr["Entered_Date"] = Convert.ToDateTime(lblEntered_Date.Text); } if (dtExpectedDate.SelectedDate == null) { dr["Expected_Date"] = DBNull.Value; } else { dr["Expected_Date"] = dtExpectedDate.SelectedDate; } if (dtCompletion_Date.SelectedDate == null) { dr["Completion_Date"] = DBNull.Value; } else { dr["Completion_Date"] = dtCompletion_Date.SelectedDate; } dtNeedList.Rows.Add(dr); } return dtNeedList; } protected void grdRemarks_RowDeleting(object sender, GridViewDeleteEventArgs e) { try { HiddenField hdnNeed_list_Id = (HiddenField)(grdRemarks.Rows[e.RowIndex].FindControl("hdnNeed_List_Id")); dtNeedList = Regenerate_Need_DataTable(); string id = "-1"; if (!String.IsNullOrEmpty(hdnNeed_list_Id.Value)) { id = hdnNeed_list_Id.Value; } if (dtNeedList.Rows.Count > 0) { DataRow dr = dtNeedList.Select("Need_List_Id = " + id)[0]; if (dr != null) { dtNeedList.Rows.Remove(dr); ViewState["Record_need"] = dtNeedList; SaveRemark(2); } } } catch (Exception ex) { clsCommon.SetMessage(lblMsg, ex.Message + Environment.NewLine + ex.StackTrace, false); } } protected void grdRemarks_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { Bind_NeedList_Dropdown(sender, e); } } public void Reset_NeedList_Grid() { DataTable dtNeedList = _obj.Select_MOC_Discipline_NeedList(ViewState["MOCID"].ToString(), ViewState["DISCID"].ToString()); //if (dtNeedList.Rows.Count == 0) //{ // DataRow dr = dtNeedList.NewRow(); // dtNeedList.Rows.Add(dr); //} ViewState["Record_need"] = dtNeedList; grdRemarks.DataSource = dtNeedList; grdRemarks.DataBind(); } private void SaveRemark(int intFlag) { try { if (ViewState["MOCID"] != null) { string strMessageToDisplay = ""; if (ddlLead.SelectedIndex == 0) { strMessageToDisplay = "Select Lead"; } if (txtLeadMgr.Text.Trim() == "") { strMessageToDisplay += "<br>Enter RE"; } if (ddlMOCStage.SelectedIndex == 0) { strMessageToDisplay += "<br>Enter MOC Stage"; } if (intFlag == 1) { dtNeedList = Regenerate_Need_DataTable(); } else { dtNeedList = (DataTable)ViewState["Record_need"]; } if (dtNeedList.Rows.Count > 0) { if (dtNeedList.Select("LEN(Need_List_Name) =0 or Need_List_Name='--Select--'").Length > 0) { strMessageToDisplay += "<br>Select Need List Name wherever not selected in Grid."; } if (dtNeedList.Select("LEN(Need_List_Description) =0").Length > 0) { strMessageToDisplay += "<br>Enter Need List Description wherever not selected in Grid."; } if (dtNeedList.Select("LEN(Action_By) = 0").Length > 0) { strMessageToDisplay += "<br>Enter Action_By wherever not selected in Grid."; } if (dtNeedList.Select("Expected_Date is null").Length > 0) { strMessageToDisplay += "<br>Enter Expected_Date wherever not selected in Grid."; } } if (!string.IsNullOrEmpty(strMessageToDisplay)) { clsCommon.SetMessage(lblDisRemarks, strMessageToDisplay, false); } else { object[] obj = new object[8]; obj[0] = ViewState["MOCID"]; obj[1] = txtLeadMgr.Text.ToUpper(); obj[2] = txtEngCompleted.Text; obj[3] = txtBalToGo.Text; obj[4] = txtNeedList.Text; obj[5] = ViewState["DISCID"]; obj[6] = ddlLead.SelectedValue; obj[7] = ddlMOCStage.SelectedValue; //MOC Stage if (dtNeedList.Rows.Count > 0) { m.InsertNeedList(dtNeedList, Convert.ToInt32(ViewState["MOCID"]), Convert.ToInt32(ViewState["DISCID"])); } int objlastid = m.UpdateDisciplineRemarks(obj, Session["UserID"].ToString()); if (objlastid == 0) { clsCommon.SetMessage(lblDisRemarks, "Status and Need list data saved Successfully.", true); } ViewState["Record_need"] = dtNeedList; grdRemarks.DataSource = dtNeedList; grdRemarks.DataBind(); Reset_NeedList_Grid(); } } } catch (Exception ex) { clsCommon.SetMessage(lblMsg, ex.Message + Environment.NewLine + ex.StackTrace, false); } } protected void dgMOC_SelectedIndexChanged(object sender, EventArgs e) { //ViewState["Record_need"] = dtNeedList; //grdRemarks.DataSource = dtNeedList; grdRemarks.DataBind(); Reset_NeedList_Grid(); } }
Что я уже пробовал:
Я хочу попробовать объявить sting как глобальную переменную и проверить кнопку save, если она не равна null, а затем вызвать aging.
Graeme_Grant
Слишком много кода ... разбейте его на простой пример проблемы. например: вот как я вычисляю, и это ошибка/проблема, с которой я столкнулся.
Разработчики жертвуют и жертвуют своим собственным временем бесплатно, чтобы помочь коллегам-разработчикам разрешить трудности. Важно, чтобы Вы были кристально ясны в том, что вы испытываете, с большим количеством информации, чтобы ваше и их время не было потрачено впустую. Чем яснее вопрос, тем больше шансов, что вы получите благоприятный ответ своевременно.
Пожалуйста, найдите время, чтобы просмотреть эти ссылки, прежде чем отправлять вопросы:
* Базовая отладка с помощью Visual Studio 2010-YouTube[^]
* Некоторые рекомендации по размещению вопросов на форумах[^]
* Сказки из Империи Зла-задавать вопросы-это навык[^]
Как только вы будете готовы обновить вопрос с четкими и краткими деталями, образцом кода, любыми сообщениями об ошибках (включая внутренние детали исключения) и т. д., Пожалуйста, нажмите на кнопку Улучшить вопрос чтобы добавить больше информации к этому вопросу.
NotPolitcallyCorrect
https://www.codeproject.com/Questions/1170360/Aging-value-dates-difference-want-to-store-in-tabl