0

您好我目前正在运行一个 ASP.NET 应用程序现在的问题是应用程序中的 Next 按钮,每当有人单击它时,它都会返回日期范围 SYSDATE + 18 到 SYDATE + 36 的数据。但它应该工作的方式是......它应该从 GridView 日期单元格中获取第一个日期值,并将 GridViewFirstCellDate+18 的数据返回到 GridViewFirstCellDate+36。我的 Gridview 代码如下。例如 Image 中的日期是 Tuesday,November 19,2013 ,因此单击 Next 按钮应该从 7/12/2013 和 25/12/2013 的数据(DD/MM/YYYY)返回

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" 
            CellPadding="3" EnableModelValidation="True" GridLines="Horizontal" 
            onrowdatabound="GridView1_RowDataBound">
            <AlternatingRowStyle BackColor="#F7F7F7" />
        <Columns>
        <asp:TemplateField HeaderText = "Date">
        <ItemTemplate>
         <asp:Label ID="Date" Runat="Server" 
                 Text='<%# Eval("DUTY_DATE", "{0:dddd,MMMM dd,yyyy}") %>' />
        </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText = "Role">
        <ItemTemplate>
         <asp:Label ID="Role" Runat="Server" 
                 Text='<%# Eval("DUTY_DESC") %>' />
        </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText = "Officer's Name">
        <ItemTemplate>
         <asp:HyperLink ID="HyperLink1" runat="server" Text='<%#  Eval("FULLNAME") %>'  NavigateUrl='<%# Eval("ROW_PASS", "/sites/HQDO/Pages/OfficerDetails.aspx?_ID={0}") %>'></asp:HyperLink>
        </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText = "Officer's HomeNo">
        <ItemTemplate>
         <asp:Label ID="HomeNo" Runat="Server" 
                 Text='<%# Eval("MOBILE_NO") %>' />
        </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText = "Officer's HomeNo">
        <ItemTemplate>
         <asp:Label ID="HomeNo" Runat="Server" 
                 Text='<%# Eval("OFFICE_TEL") %>' />
        </ItemTemplate>
        </asp:TemplateField>

        </Columns>
            <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
            <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
            <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
            <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
            <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
        </asp:GridView> 

下一个按钮的 CodeBehind 如下

protected void Button3_Click(object sender, EventArgs e)
        {
                            DataTable table = new DataTable();


            string connectionString = GetConnectionString();
            string sqlQuery = "SELECT CONTACTS.ROWID as ROW_PASS,DUTY_ROTA.DUTY_DATE AS DUTY_DATE,DUTY_ROTA.DUTY_TYPE AS DUTY_TYPE,DUTY_ROTA.DUTY_OFFICER AS DUTY_OFFICER,DUTY_TYPES.DESCRIPTION AS DUTY_DESC,CONTACTS.SNAME AS FULLNAME,CONTACTS.MOBILE AS MOBILE_NO,CONTACTS.OFFICETEL AS OFFICE_TEL FROM DUTY_ROTA,DUTY_TYPES,CONTACTS WHERE DUTY_DATE between SYSDATE+18 and SYSDATE+36 AND DUTY_ROTA.DUTY_TYPE = DUTY_TYPES.DUTY_TYPE AND SNAME IS NOT NULL ORDER BY DUTY_DATE";


            using (OracleConnection conn = new OracleConnection(connectionString))
            {

                try
                {
                    conn.Open();

                    using (OracleCommand cmd = new OracleCommand(sqlQuery, conn))
                    {

                        using (OracleDataAdapter ODA = new OracleDataAdapter(cmd))
                        {

                            ODA.Fill(table);

                        }

                    }
                }
                catch (Exception ex)
                {
                    Response.Write("Not Connected" + ex.ToString());
                }

            }

            //DropDownList1.DataSource = table;
            //DropDownList1.DataValueField = "";

            GridView1.DataSource = table;
            GridView1.DataBind();
        }

我试图通过以下方式捕捉价值

LabelDate.Text = GridView1.Rows[0].Cells[0].Text;

然后将其转换为 Date 并在我的 SQL 中使用它。但 LabelDate.Text 无法存储数据,不知道为什么。

各位哥们请帮忙我如何捕获 GridView First Row First Cells 数据并添加 18 天......我也想在我的 SQL 中使用它。

4

2 回答 2

0

您需要为GridView.RowDataBound添​​加处理程序

这是一个简单的例子:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    LabelDate.Text = e.Row.Cells[0].Text;
}
于 2013-10-31T09:08:35.003 回答
0

尝试 :

LabelDate.Text = Convert.ToDateTime(GridView1.Rows[0].Cells[0].Text).AddDays(18).ToShortDateString();

或者:

LabelDate.Text = DateTime.Parse(GridView1.Rows[0].Cells[0].Text).AddDays(18).ToShortDateString();

或者:

 System.Globalization.CultureInfo provider = new System.Globalization.CultureInfo("fr-FR");
 Label1.Text = DateTime.ParseExact(GridView1.Rows[0].Cells[3].Text, "g", provider).AddDays(18).ToShortDateString();
于 2013-10-31T09:22:31.173 回答