2015-05-13 106 views
0

您好專家我使用此代碼前段時間,是工作,但現在不工作......!它說Value ComboBox更改TextBox的值在C#

(轉化爲varchar值 「System.Data.DataRowView」轉換爲數據類型爲int失敗時)

代碼下拉框中選擇價值變動文本框與此值的詳細信息並感謝你提前。

public partial class test : Form 
{ 

    SqlConnection cn = new SqlConnection("Server=AMEER;DataBase=custemer_net;Integrated security=true"); 
    SqlDataAdapter da; 
    DataTable dt = new DataTable(); 
    DataTable dttt = new DataTable(); 
    public test() 
    { 
     InitializeComponent(); 
     da = new SqlDataAdapter("Select *from subscrbtion ", cn); 
     da.Fill(dt); 
     comboBox1.DisplayMember = "name"; 
     comboBox1.ValueMember = "id"; 
     comboBox1.DataSource = dt; 

    } 

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     da = new SqlDataAdapter("select * from subscrbtion where id='" + comboBox1.SelectedValue + "'", cn); 
     da.Fill(dttt); 
     textBox1.Text = dttt.Rows[0]["phone"].ToString(); 
    } 
+0

您在這裏得到什麼錯誤/異常? –

+0

謝謝親愛的我,但現在的錯誤對不起,錯誤 – ameer

+0

錯誤何時下降?我假定在textBox1.Text = dttt.Rows [0] [「phone」]。ToString();另外,請在聲明數據和值成員 – Schuere

回答

0

我認爲你必須在你的SqlDataAdapter故障:

new SqlDataAdapter("select * from subscrbtion where id='" + comboBox1.Text + "'", cn); 

應該

new SqlDataAdapter("select * from subscrbtion where id='" + comboBox1.SelectedValue + "'", cn); 

的SelectedValue將指向標識,你ValueMember下宣佈。

附加:設置您的組合框的數據源,宣佈其數據/值成員後:

comboBox1.DisplayMember = "name"; 
comboBox1.ValueMember = "id"; 
comboBox1.DataSource = dt; 

做根據你的代碼更改:

public test() 
{ 
    InitializeComponent(); 

    using(SqlConnection cn = new SqlConnection("Server=AMEER;DataBase=custemer_net;Integrated security=true")) 
    { 
     var adapter = new SqlDataAdapter("Select *from subscrbtion ", cn); 
     adapter.Fill(dt); 
    } 
    comboBox1.DisplayMember = "name"; 
    comboBox1.ValueMember = "id"; 
    comboBox1.DataSource = dt; 
} 

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    //for testing 
    MessageBox.Show(comboBox1.SelectedValue.ToString()); 
    // 

    //clear the datatable dttt 
    dttt.Clear();     //<----------THIS SHOULD BE YOUR NEW SOLUTION 

    //refill the datatable with the new information 
    using(SqlConnection cn = new SqlConnection("Server=AMEER;DataBase=custemer_net;Integrated security=true")) 
    { 
     var adapter = new SqlDataAdapter("select * from subscrbtion where id='" + comboBox1.SelectedValue + "'", cn); 
     adapter.Fill(dttt); 
    } 
    //for testing 
    MessageBox.Show(dttt.Rows.Count.ToString()); 
    // 

    //show the data inside the textbox. 
    textBox1.Text = dttt.Rows[0]["phone"].ToString(); 
} 

讓我知道了消息框下降

編輯: 根據msdn:SqlDataAdapter.Fill()方法ADDS dat內的值凌辱。 ==>這個課程意味着爲什麼測試消息框總是隨着行增加。

我在上面的代碼中添加了值,希望這有助於幫助

+0

謝謝你現在的工作沒有錯誤,但文本框的值不會改變與選擇並顯示文本框中的第一個值,但不會改變 – ameer

+0

@ameer;你可以用你已經實施的改變來編輯你的問題嗎?通過這種方式,我們可以提供進一步的幫助,但不清楚你做了什麼改變以及沒有做什麼改變。 – Schuere

+0

我編輯我的朋友這個問題讓我生氣因爲我總是使用這種方法 – ameer