'ASP.NET query database with text from textbox without clicking on button

I have a datepicker calendar in JS. Once a user clicks on a date, that date gets passed to the asp:TextBox as string. I would like to query my database with the text in textbox without having to click on a button. Is this possible?



Solution 1:[1]

Well, there is what, 100's of JS date pickers? (which one you using might have helped here).

So, it going to depend on how the JS works.

Lets drop in a text box, set autopostback = true, and then add a text change event.

So, we have this markup:

<h2>Choose Date</h2>
<asp:TextBox ID="txtDate" runat="server"
TextMode="Date" AutoPostBack="True" ></asp:TextBox>

and the code behind is this:

Protected Sub txtDate_TextChanged(sender As Object, e As EventArgs) Handles txtDate.TextChanged

    Debug.Print("Date changed to " & txtDate.Text)

End Sub

Now run the page and we have this:

enter image description here

Note how that text box already shows a date picker if you set textMode = date. Maybe you don't need a JS date picker then?

Ok, so lets select a date:

enter image description here

And because I have autopost-back = true, I see this in output:

Output:

enter image description here

So, in your server side text changed event - it should trigger. But that triggering of the text changed event may well depend on how and what kind of out of the 1000+ date picker JS examples I can find on the web that you are using here.

So now lets query the database based on that value then right?

So, say we have this markup:

<h2>Choose Date</h2>
<asp:TextBox ID="txtDate" runat="server" TextMode="Date" AutoPostBack="True" ></asp:TextBox>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="ID" CssClass="table">
  <Columns>
      <asp:BoundField DataField="FirstName" HeaderText="FirstName"     />
      <asp:BoundField DataField="LastName" HeaderText="LastName"       />
      <asp:BoundField DataField="HotelName" HeaderText="HotelName"     />
      <asp:BoundField DataField="VisitDate" HeaderText="Vist" DataFormatString="{0:yyyy-MM-dd}"  />
      <asp:BoundField DataField="Description" HeaderText="Description" />
   </Columns>
</asp:GridView>

We select a date, and show visits for that date.

Our code thus becomes this:

Protected Sub txtDate_TextChanged(sender As Object, e As EventArgs) Handles txtDate.TextChanged

    Debug.Print("Date changed to " & txtDate.Text)

    Using conn As New SqlConnection(My.Settings.TEST4)
        Dim strSQL =
            "SELECT * from tblHotels WHERE VisitDate = @VisitDate ORDER BY HotelName"
        Using cmdSQL = New SqlCommand(strSQL, conn)

            cmdSQL.Parameters.Add("@VisitDate", SqlDbType.DateTime).Value = txtDate.Text
            conn.Open()
            GridView1.DataSource = cmdSQL.ExecuteReader
            GridView1.DataBind()

        End Using
    End Using

End Sub

And we now have this:

enter image description here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 raiyan22