Хорошо, прежде всего, вы должны знать, что функция input () возвращает строку , и, таким образом, ваше первое условие: if login_orsignup1 != 1
всегда будет истинным, поскольку строковый объект [112 ] не равен объекту int 1
. Что касается того, почему вас снова спрашивают о пользователе после того, как у него есть надежный пароль, то это потому, что оператор break
только прерывает текущий цикл. Таким образом, вы только прерываете этот цикл, чтобы вернуться в начало цикла проверки имени пользователя. Я бы предложил более чистую реализацию, например, так:
# login or sign-up loop
while True:
login_orsignup1 = input(" Press \n1) to Log in \n2) to register a new account")
# you can have the input result in a variable like so, if you want to use it later on
if login_orsignup1 == "1": # you said '1' was for login, right?
# or you can test this directly in your if statement
# if it is only needed for this condition
while input("What is your username: ") != username:
print("Incorrect username")
# same thing for password, but could be implemented another way if you
# don't want to loop until the user gets the correct password
while input("What is your password: ") != input_lockerpassword:
print("Incorrect password for this username")
# your code gets here only if the user entered the right credentials
# so you can now break of the login or sign-up loop
break
elif login_orsignup1 == "2":
# code for registration here
Это может быть достаточно для простой вещи. Я бы порекомендовал проектировать эту консольную программу, следуя принципам конечного автомата и добавляя больше кода на каждом шаге для обработки таких случаев, как возврат на один шаг назад или в начале.
Надеюсь, это поможет
Вы удаляете строку из gridview, но Вы затем идете и называете привязку данных снова, которая просто обновляет gridview к тому же состоянию, в котором находится первоначальный источник данных.
Или удалите его из источника данных и затем свяжите с данными, или свяжите с данными и удалите его из gridview без перепривязки данных.
Вы удаляете строку из gridview и затем снова переплетаете его к источнику данных (который все еще содержит строку). Или удалите строку из источника данных или не снова переплетайте gridview впоследствии.
Ответ по умолчанию должен удалить объект из любого набора, который Вы используете в качестве DataSource GridView.
Если та опция является нежелательным затем, я рекомендую использовать GridView RowDataBound
событие для выборочной установки строки (e.Row
) Visible
свойство ко лжи.
Удалите строку из таблицы dtPrf_Mstr, а не из представления сетки.