【发布时间】: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#