2013-09-10 4 views
0

Я пытаюсь использовать функцию keydown. Мой код запущен и запущен, но я получаю эту странную ошибку. Я запускаю запрос, если в столбце базы данных значение MIND, тогда нужно проверить умение радиообмена иначе MSSL.but, элемент управления всегда переходит в другую часть независимо от того, значение в базе данных - MIND или MSSL. Ниже мой кодуправление не работает должным образом

private void txtlogin_userid_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter) 
     { 
      if (sender is TextBox) 
      { 
     TextBox txb = (TextBox)sender; 
     dc.SelectCommand = new SqlCommand("select * from UserMaster where UserID='" + txb.Text + "'", sc); 
     dc.Fill(ds); 
     dg.DataSource = ds.Tables[0]; 
     txtlogin_name.Text = ds.Tables[0].Rows[0][1].ToString(); 
     txtlogin_mailid.Text = ds.Tables[0].Rows[0][2].ToString(); 
     MessageBox.Show(ds.Tables[0].Rows[0][3].ToString()); 
     string a = "MIND"; 

     if (ds.Tables[0].Rows[0][3].ToString() == a) 
     { 
      radiomind.Checked = true; 
     } 
     else 
     { 
      radioMSSL.Checked = true; 
     } 
    } 
}} 

когда я введите любое число, которое имеет УМ в качестве значения в базе данных, то окно сообщений показывает УМ, но до сих пор управление переходит в еще часть и кнопки MSSL радио activates.what в делать?

+0

В отладчике вы когда-нибудь видели, что значение 'ds.Tables [0] .Rows [0] [3]' is «MIND»? – Tawnos

+0

Я добавил окно сообщения, которое отображает MIND, как только я ввожу значение в текстовое поле и нажимаю enter. –

+0

MessageBox.Show (ds.Tables [0] .Rows [0] [3] .ToString()); –

ответ

0

Попробуйте

if (e.KeyCode == Keys.Return) 

вместо Keys.Enter.


Если вы пишете

private void txtlogin_userid_KeyDown(object sender, KeyEventArgs e) 
{ 
    System.Diagnostics.Debug.WriteLine(e.KeyCode); 
} 

Вы увидите фактический код в окне вывода (открытый с меню: Debug> Windows> Output).

+0

didnot решить проблему ... сделал то, что сказал –

0

Попробуйте

 Convert.ToString(ds.Tables[0].Rows[0][3]) == a 

Вместо.

+0

: (... сделал это. ., пока переключатель mssl активирует –

1

Положите точку останова на каждое радио [...]. Проверено, действительно ли это происходит в другом? Возможно, имя переменной переключателя неверно. Возможно, переключатель переключается где-то в другом месте.

if (ds.Tables[0].Rows[0][3].ToString() == a) 
    { 
     MessageBox.Show("mind"); 
     radiomind.Checked = true; 
    } 
    else 
    { 
     MessageBox.Show("mssl"); 
     radioMSSL.Checked = true; 
    } 

Проверьте точное значение каждой строки, которую вы сравниваете. Есть ли у них дополнительное пространство, персонажи? Иногда строка может иметь дополнительное пространство.

MessageBox.Show("[" + ds.Tables[0].Rows[0][3].ToString() + "]"); 
MessageBox.Show(ds.Tables[0].Rows[0][3].ToString().Length); 
MessageBox.Show("[" + a + "]"); 
MessageBox.Show(a.Length); 

Примечание стороны

Как Quibblesome сказал, вы должны использовать SqlParameters потому что вы уязвимы для sql-injections.

Если вы делаете select *, у вас могут быть ошибки в futur, если порядок ваших columsn изменяется.

+0

его отображаемую ошибку в строке MessageBox.Show (ds.Tables [0] .Rows [0] [3] .ToString(). Length); –

+0

@ user2707945 capital 'L', я изменил это –

+0

да сделал это с капиталом L только ... –

Смежные вопросы