【问题标题】:2 drop down list and calendar to display gridview in C#2 下拉列表和日历在C#中显示gridview
【发布时间】:2018-08-23 08:36:04
【问题描述】:

我的学校项目有一个简单的预订票务系统,并且在 asp.net 中使用 Windows 窗体。我有简单的搜索,人们可以在其中输入搭车、下车和日期。我正在使用下拉列表 FOR 上车和下车以及附加到文本框的日期普通日历。但我无法填充网格视图,例如在特定日期从一个位置到另一个位置的巴士乘车,例如 8 月 24 日从 A 到 B。我的日期我存储为其他日期 Nvarchar。我可以绑定下拉列表,但搜索按钮什么也没显示。 下面是我的前端代码和后端代码。请我需要帮助,我是 C# 和一般编码的新手。

<form id="form1" runat="server">
        <div>
            <asp:TextBox ID="tbdates" runat="server"></asp:TextBox>


            <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button" />

            <asp:DropDownList ID="DropDownList1" runat="server">
            </asp:DropDownList>

            <asp:DropDownList ID="DropDownList2" runat="server">
            </asp:DropDownList>

        </div>
        <asp:Calendar ID="Calendar1" runat="server" OnSelectionChanged="Calendar1_SelectionChanged"></asp:Calendar>

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            CssClass="table table-hover table-striped">
            <Columns>
                <asp:BoundField DataField="BusNo" HeaderText="Bus Number" />
                <asp:BoundField DataField="date" HeaderText="Date" />
                <asp:BoundField DataField="Time" HeaderText="Time" />
                <asp:BoundField DataField="Bickup" HeaderText="Bick Up" />
                <asp:BoundField DataField="DropOff" HeaderText="Drop Off" />
                <asp:BoundField DataField="Fare" HeaderText="Fare" />
            </Columns>
            <HeaderStyle BackColor="#33CCFF" />
        </asp:GridView>
        <asp:Button ID="Button1" runat="server" Text="Button" />
        <br />
    </form>


public partial class DriverDisplay : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                fill_DropDownList1();
                fill_DropDownList2();
            }

        }
        private void fill_DropDownList1()
        {
            try
            {
                SqlConnection con2 = new SqlConnection(ConfigurationManager.ConnectionStrings["MyDatabase1ConnectionString"].ConnectionString);

                string sql = "SELECT * FROM Ticket";
                SqlCommand cmd = new SqlCommand(sql, con2);
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                adapter.Fill(dt);
                DropDownList1.DataSource = dt;
                DropDownList1.DataTextField = "Bickup";
                DropDownList1.DataValueField = "Bickup";
                DropDownList1.DataBind();
            }
            catch (Exception)
            {

            }
        }

        private void fill_DropDownList2()
        {
            try
            {
                SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyDatabase1ConnectionString"].ConnectionString);

                string sql = "SELECT * FROM Ticket";
                SqlCommand cmd = new SqlCommand(sql, con);
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                adapter.Fill(dt);
                DropDownList2.DataSource = dt;
                DropDownList2.DataTextField = "Dropoff";
                DropDownList2.DataValueField = "DropOff";
                DropDownList2.DataBind();
            }
            catch (Exception)
            {

            }
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            Calendar1.Visible = true;


        }

        protected void Calendar1_SelectionChanged(object sender, EventArgs e)
        {
            tbdates.Text = Calendar1.SelectedDate.ToShortDateString();
            Calendar1.Visible = false;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            //DateTime date = Convert.ToDateTime(tbdates.Text);
            SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings["MyDatabase1ConnectionString"].ToString());

            sqlcon.Open();

            string query = "select * from Ticket where date = @Date";
            SqlCommand cmd = new SqlCommand(query, sqlcon);
            SqlParameter date = cmd.Parameters.Add("@Date", SqlDbType.DateTime);

            SqlDataReader rdr = cmd.ExecuteReader();

            GridView1.DataSource = rdr;
            GridView1.DataBind();

            sqlcon.Close();

        }
    }
}

【问题讨论】:

  • 我应该怎么知道我的价值是什么,我不知道,很抱歉,但我在这里学习。
  • cmd.CommandText = "select * from Ticket where date = @Date"; cmd.Parameters.Add("日期", SqlDbType.Int); cmd.Parameters["Date"].Value = "你的日期值"; SqlDataAdapter da = new SqlDataAdapter(cmd);数据集 ds = new DataSet(); da.填充(ds); GridView1.DataSource = ds; GridView1.DataBind();
  • 非常感谢您,我会尽力让您知道。我的日期值将是使用带有文本框的日历。它应该是 tbdate 作为 texbox 的 ID。
  • 问题出在日期上。数据库将日期与小时、分钟和秒一起存储,因此您永远不会匹配。所以使用 "select * from Ticket where Day(date) = @Date"
  • 日期以数字形式存储,因此格式 DD/MM/YYYY 或 MM/DD/YYYY 应该没有区别。 TimeZone 可能会有所不同,因为 Day 可能会差 1 天。因此,如果您尝试在工作周中获取天数并且您要求周一的一天,则它可以存储为周日。

标签: c#


【解决方案1】:

您的代码中有一些错误,我建议您阅读有关在 ASP.Net 中使用 ADO.Net 和 C# 的 CRUD 操作,如何使用 SqlConnection 和 SqlCommand 类型。当您使用 asp.net Web 表单时,您可以使用 SqlDataSource 控件为您的控件提供数据。

<form id="form1" runat="server">
<div>
    <asp:TextBox ID="tbdates" runat="server"></asp:TextBox>


    <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button" />

    <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource1" DataTextField="Bickup" DataValueField="Bickup">
    </asp:DropDownList>

    <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="SqlDataSource1" DataTextField="DropOff" DataValueField="Dropoff">
    </asp:DropDownList>

</div>
<asp:Calendar ID="Calendar1" runat="server" OnSelectionChanged="Calendar1_SelectionChanged"></asp:Calendar>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
              CssClass="table table-hover table-striped" DataSourceID="SqlDataSource2">
    <Columns>
        <asp:BoundField DataField="BusNo" HeaderText="Bus Number" />
        <asp:BoundField DataField="date" HeaderText="Date" />
        <asp:BoundField DataField="Time" HeaderText="Time" />
        <asp:BoundField DataField="Bickup" HeaderText="Bick Up" />
        <asp:BoundField DataField="DropOff" HeaderText="Drop Off" />
        <asp:BoundField DataField="Fare" HeaderText="Fare" />
    </Columns>
    <HeaderStyle BackColor="#33CCFF" />
</asp:GridView>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<br />
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyDatabase1ConnectionString %>" 
                   SelectCommand="SELECT [BusNo], [date], [time], [Bickup], [DropOff], [Fare] FROM [Ticket]">

</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:MyDatabase1ConnectionString %>" SelectCommand="SELECT [BusNo], [date], [time], [Bickup], [DropOff], [Fare] FROM [Ticket] WHERE ([date] = @date)">
    <SelectParameters>
        <asp:CookieParameter CookieName="date" DbType="Date" Name="date" />
    </SelectParameters>
</asp:SqlDataSource>

这是你的 DriverDisplay:

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DropDownList1.DataBind();
                DropDownList2.DataBind();
            }
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            Calendar1.Visible = true;
        }

        protected void Calendar1_SelectionChanged(object sender, EventArgs e)
        {
            tbdates.Text = Calendar1.SelectedDate.ToShortDateString();
            Calendar1.Visible = false;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            if (Request.Cookies["date"] == null)
            {
                Request.Cookies.Add(new HttpCookie("date"));
            }
            Request.Cookies["date"].Value = tbdates.Text;
        }

【讨论】:

  • 非常感谢您的帮助。我肯定会学习你推荐的那些。直到你出现我仍然无法做到,我尝试了很多次,但我完全失败了。我是学生,我花了很多时间才弄清楚这一点。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多