Nurto Ответов: 1

2 выпадающий список и календарь для отображения gridview в C#


У меня есть простая система бронирования билетов для моего школьного проекта и я использую форму windows в asp.net-да. у меня есть простой поиск, где человек может ввести bickup, drop off и дату. я использую выпадающий список для bickup и dropoff, а также обычный календарь Даты, прикрепленный к текстовому окну. но я не могу заполнить gridview , например, автобусные поездки, доступные из одной позиции в другую в определенные даты, например из A в B в 24 августа. моя дата хранится как дата ассортиментом тип 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>


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

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

        }
    }
}

1 Ответов

Рейтинг:
1

M4rLask

You need to pass the value of the date to the parameter


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);
           //here it is necessary to assign the value of the date for the query
           SqlParameter date = cmd.Parameters.Add("@Date", "date value here");

           SqlDataReader rdr = cmd.ExecuteReader();

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

           sqlcon.Close();

       }
   }


Nurto

Значение даты было бы тем, чего я действительно не знаю, мне очень жаль. пожалуйста, не могли бы вы сказать мне ... или объяснить мне.

M4rLask

Необходимо взять значение, выбранное пользователем в календаре, и присвоить этому параметру

Nurto

я передаю текстовое поле, которое является tbdates.Текстовое поле сэр-это то, что я должен поставить. мне очень жаль, если это глупый вопрос.