2014-11-10 1 views
0

comboBox 선택 내용을 기반으로 DataGridView을 채우려고합니다. 내가 잘못 가고 어디 모르겠어요 - 도와주세요 .. 여기 nvarchar 값 'System.Data.DataRowView'를 데이터 형식 int로 변환 할 때 변환하지 못했습니다.

내 코드입니다 :

public void GetTestGroups() 
{ 
    string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString; 

    using (SqlConnection con = new SqlConnection(CS)) 
    { 
     SqlDataAdapter da = new SqlDataAdapter("select LabTestGroupId,GroupName from tbl_LabTestGroup", con); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 

     cbTestGroup.DataSource = dt; 
     cbTestGroup.DisplayMember = "GroupName"; 
     cbTestGroup.ValueMember = "LabTestGroupId";   
    } 
} 

private void cbTestGroup_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString; 

    using (SqlConnection con = new SqlConnection(CS)) 
    { 
     SqlDataAdapter da = new SqlDataAdapter("spGetTestNames", con); 
     da.SelectCommand.CommandType = CommandType.StoredProcedure; 

     da.SelectCommand.Parameters.AddWithValue("@LabTestGroupId", cbTestGroup.SelectedValue.ToString()); 

     DataTable dt = new DataTable(); 
     da.Fill(dt);// Error in this line. 

     dgvLabTests.DataSource = dt; 
    } 
} 

내 저장 프로 시저 :

create procedure spGetTestNames 
    @LabTestGroupId int 
as 
begin 
    select TestNames 
    from tbl_LabTests 
    where LabTestGroupId = @LabTestGroupId 
end 

답변

0

당신은에 string를 전달하는 당신의 int이 필요할 때 저장 프로 시저를 호출합니다. 이와 같이 @LabTestGroupId 매개 변수를 설정하는 코드를 변경하십시오.

da.SelectCommand.Parameters.AddWithValue(
    "@LabTestGroupId", 
    int.Parse(cbTestGroup.SelectedValue.Item["LabTestGroupId"].ToString())); 

이 아니면 원하는 int 값으로 SelectedValue를 변환하는 방법을 결정해야합니다. 디버깅을하고 시계 창에서 SelectedValue을보고 정확히 무엇인지와 원하는 값을 얻는 방법을 결정하는 것이 좋습니다.

+0

감사하지만 작동하지 않습니다. 개체에서 문자열로 변환 할 수 없다고 말합니다. – keerthi

+0

'int.Parse (cbTestGroup.SelectedValue.ToString())'해야 할 수도 있습니다. 디버거에'SelectedValue'가 정확히 무엇인지보십시오. – juharr

+0

입력 문자열이 올바른 형식이 아님을 시도했습니다. – keerthi

관련 문제