Sumit-HopeForBest Ответов: 1

Значение старения (разница дат) нужно сохранить в таблице


В сетке захвата целочисленного значения для двух разных дат с помощью скрытого поля вызова значения в сетке, пожалуйста, укажите, как сохранить значение старения в таблице SQL.

. aspx-код
<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="0"></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>

#Используется CSharp
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
        {
            strAge = (DateTime.Now.Date - Convert.ToDateTime(lblEnterDate.Text)).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);
    }
}


Пожалуйста, помогите мне, если это возможно, с каким-нибудь примером, так как это поможет мне лучше понять.

Что я уже пробовал:

Значение получает привязку при загрузке страницы и при нажатии события в методе save button. однако я просто хочу знать,как определить это старение при определении метода кнопки сохранения.

njammy

Пожалуйста, объясните более подробно, для чего нужна колонка старения?

Sumit-HopeForBest

Это для разницы дат, основанной на логике
1. разница дат между датой ввода в сетку и ожидаемой датой, которая является мандатом, когда дата завершения не вставлена
2. когда дата завершения вставляется, то разница в дате между датой ввода и датой завершения.

1 Ответов

Рейтинг:
1

NightWizzard

Почему бы не использовать вычисляемый столбец в таблице SQL вместо того, чтобы вычислять его в вашем приложении и сохранять в базе данных? С помощью вычисляемого столбца возраст всегда актуален для каждой записи в зависимости от значений, хранящихся внутри.