There is several ways you could fix this, the simplest is to order your results
da = New SqlDataAdapter("Select Item_id, Item_menu_description From tbl_item where Item_Cat = '" & lbl & "' order by btnName", cn)
You will run into issues if you have more than 9 buttons and use btn1 to btn10 as their names - the query will sort the results via the text value, hence btn10 would come before btn2 in the result set.
An alternative is to do as follows;
da = New SqlDataAdapter("SELECT Item_id, Item_menu_description, btnName FROM tbl_item WHERE Item_Cat = '" & lbl & "'")
For Each btn As Button In FlowLayoutPanel2.Controls()
Dim foundRows() AS DataRow
foundRows = dt1.Select("btnName = '" & btn.Name & "'")
If foundRows.Length > 0 Then
btn.Text = dt1.Rows(keycount)(1).ToString
End If
Next
Please take the time to appreciate comments by senior members of the community - they are trying to help
Kind Regards