2010-08-23 8 views
3

내 xaml 코드의 텍스트 상자에있는 텍스트를 C#의 정수 값으로 변환해야합니다. .NET 4.0과 Visual Studio 2010을 사용하고 있습니다. xaml 태그 자체에서이를 수행 할 방법이 있습니까? 아니면 C sharp에서 변환기를 작성해야합니까? 다음을 시도했지만 작동하지 않습니다.텍스트 상자 텍스트를 정수로 변환

Convert.ToInt32(this.txtboxname.Text) 

도움을 주신 데 대해 감사드립니다. 감사.

+0

내가 백엔드에서 SQL 서버 2008을 사용하고 있음을 언급하는 것을 잊었다. "int"유형의 SQL Server 필드에이 변환을 사용해야합니다. 나는 분명히 희망한다. 다시 한번 감사드립니다. – zack

+1

그것이 작동하지 않는다는 것이 무엇을 의미합니까? 이 데이터를 누가 사용하고 있습니까?저장 프로 시저를 호출하거나 int로 repo 메소드를 호출해야합니까? –

+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 문을 검사하십시오.

+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 데이터베이스가 허용하는 경우 해당 필드에 null 값이 같은 int? value를 사용해보십시오 :주의

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

이 null 값을 반환 0의 Convert.ToInt32!

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. 당신은 기능을 실행하는 버튼 또는 뭔가를해야만 클릭에 숫자를 넣어.
  3. 텍스트 상자에 숫자보다 큰 숫자가 표시됩니다.

는 :

관련 문제