繁体   English   中英

从GridView单元格中选择一个Datevalue并将其用作SQL查询的参数

[英]Selecting a Datevalue from GridView Cell and Use it as Parameter to a SQL Query

嗨,我目前正在运行ASP.NET应用程序现在问题出在应用程序中的“下一步”按钮上,只要有人单击它,它就会将日期范围SYSDATE + 18到SYDATE + 36的数据返回。 但是它的工作方式是..它应从GridView日期单元格中获取第一个日期值,并将GridViewFirstCellDate + 18的数据返回到GridViewFirstCellDate + 36。 我的Gridview代码如下。 例如,图片中的日期为2013年11月19日,星期二,因此,单击下一步按钮应从2013年7月12日和2013年12月25日的数据(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第一行的第一个单元格数据并将其添加18天...我也想在SQL中使用它。

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

这是一个简单的示例:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    LabelDate.Text = e.Row.Cells[0].Text;
}

尝试:

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM