2010-08-23 3 views
3

Мне нужно преобразовать текст в текстовое поле моего кода xaml в целочисленное значение в C#. Я использую .NET 4.0 и Visual Studio 2010. Есть ли способ сделать это в самих тегах xaml или мне нужно написать конвертер в C sharp. Я пробовал следующее, но не работает:Преобразование текста текстового поля в целое число

Convert.ToInt32(this.txtboxname.Text) 

Любая помощь очень ценится. Благодарю.

+0

Я забыл упомянуть, что я использую SQL Server 2008 в серверной. Мне нужно использовать это преобразование для моего поля sql server, которое имеет тип «int». Надеюсь, я поняла. Еще раз спасибо. – zack

+1

Что значит, что он не работает? Кто использует эти данные?Вы вызываете хранимую процедуру или нужно вызвать метод репо с int? –

+0

Я имею в виду, что я передаю этот int как аргумент хранимой процедуры в sql server 2008. Но я получаю эту ошибку. «Процедура или функция 'name_of_SP' ожидает параметра '@par_name', который не был указан." – zack

ответ

9

Предложите сделать это в своем коде перед отправкой на SQL Server.

int userVal = int.Parse(txtboxname.Text); 

Возможно, попробуйте разобрать и, при необходимости, сообщить об этом пользователю.

int? userVal; 
if (int.TryParse(txtboxname.Text, out userVal) 
{ 
    DoSomething(userVal.Value); 
} 
else 
{ MessageBox.Show("Hey, we need an int over here."); } 

Исключение, которое вы отмечаете, означает, что вы не включаете значение в вызов хранимой процедуры. Попробуйте установить точку останова отладчика в вашем коде в момент вызова в код, который создает вызов SQL Server.

Убедитесь, что вы действительно прикрепляете параметр к SqlCommand.

using (SqlConnection conn = new SqlConnection(connString)) 
{ 
    SqlCommand cmd = new SqlCommand(sql, conn); 
    cmd.Parameters.Add("@ParamName", SqlDbType.Int); 
    cmd.Parameters["@ParamName"].Value = newName;   
    conn.Open(); 
    string someReturn = (string)cmd.ExecuteScalar();   
} 

Возможно, в вашей базе данных может быть запущен SQL-профилировщик SQL для проверки отправленного/выполняемого оператора SQL.

+0

Я сделал то же самое. Я все еще получаю ту же ошибку. Я уверен, что это не целочисленная проблема. Он получает преобразованный тон и передается методу (DoSomething(), как вы упомянули здесь), который вызывает хранимую процедуру. Я установил точку останова в этом методе, и аргумент, похоже, содержит целочисленное значение. Однако вызов хранимой процедуры все еще не выполняется с той же ошибкой, что и выше. – zack

+0

, и если я запустил хранимую процедуру из среды SQL Server 2008, она работает нормально. exec stored_procedure_name 7654 или любое другое целочисленное значение вместо 7654. – zack

+0

@VP: возможно, что-то не так с вашим параметром, связанным с вызовом? –

5

Вам не нужно написать конвертер, просто сделать это в обработчике/коде:

int i = Convert.ToInt32(txtMyTextBox.Text); 

ИЛИ

int i = int.Parse(txtMyTextBox.Text); 

Text свойство вашего текстового поля является String типа, так вам нужно выполнить преобразование в коде.

+0

Я думал, что первое решение, которое вы предоставили ('int i = Convert ... .'), является тем же, что говорит OP, которое он пытался. –

+0

@Alex: Это так. OP имел правильный метод, но хотел знать, можно ли сделать то же самое в XAML. Это невозможно. –

0

Если база данных SQL позволяет Нулевые значения для этого поля попробуйте использовать int? value вроде:

if (this.txtboxname.Text == "" || this.txtboxname.text == null) 
    value = null; 
else 
    value = Convert.ToInt32(this.txtboxname.Text); 

Позаботьтесь, что Convert.ToInt32 из Нулевое значение возвращает 0!

Convert.ToInt32(null) returns 0 
+0

Нет, он не разрешает null. и я проверяю это в своем коде C# перед его преобразованием. – zack

1

Пример:

int x = Convert.ToInt32(this.txtboxname.Text) + 1 //You dont need the "this" 
txtboxname.Text = x.ToString(); 

"x.ToString", это сделать целое число в строку, чтобы показать, что в текстовом поле.

Результат:

  1. Вы помещаете число в текстовом поле
  2. Вы нажимаете на кнопку или Somthing под управлением функции.
  3. Вы видите, что ваш номер больше вашего номера в одном текстовом поле.

:)

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