2017-04-25 79 views
1

是否可以隱藏String.Format的一部分?隱藏ComboBox.Item中的String.Format的一部分

這是我的代碼:

'Select Product' 
Try 
    MysqlConn.Close() 
    MysqlConn.Open() 
    Dim Query As String 
    Query = "select id, name,id_maker, id_types from product ORDER BY name ASC" 
    COMMAND = New MySqlCommand(Query, MysqlConn) 
    READER = COMMAND.ExecuteReader 
    While READER.Read 
     Dim sName = READER.GetString("name") 
     Dim sMaker = READER.GetString("id_maker") 
     Dim sTypes = READER.GetString("id_types") 
     Dim sId = READER.GetString("id") 

     'ComboBox1.Items.Add(sName)' 
     ComboBox1.Items.Add(String.Format("{0}|{1}|{2}|{3}", sName, sMaker, sTypes, sId)) 


    End While 
Catch ex As Exception 
    MessageBox.Show(ex.Message) 
Finally 
    MysqlConn.Dispose() 
End Try 
'Select Product' 

我想隱藏{3}這是在ComboBoxsId,因爲後來我需要使用其中使用ComboBox1.Text查詢和ID是必要的。

+0

如果你不希望用戶看到的標識,不要將它添加到字符串格式。如果你在代碼中需要它。使用數據源。 – Plutonix

回答

0

也許你可以改變分配數據到ComboBox的方式。

首先要做的就是改變查詢和使用CONCAT

SELECT id, CONCAT(name,'|',id_maker,'|',id_types) AS value FROM product ORDER BY name ASC 

我也將實現Using

管理資源由.NET Framework垃圾收集處置(GC)沒有任何額外的編碼。您不需要使用受管資源的塊。但是,仍然可以使用Using塊強制處理託管資源,而不是等待垃圾回收器。

您也不需要READER。而是將數據加載到DataTable並將其分配給ComboBox上的.DataSource屬性。

您的代碼將是這個樣子:

Using con As New MySqlConnection(connectionString) 
     cmd As New MySqlCommand("SELECT id, CONCAT(name,'|',id_maker,'|',id_types) AS value FROM product ORDER BY name ASC", con) 

    con.Open() 

    Dim dt As New DataTable 
    dt.Load(cmd.ExecuteReader()) 

    ComboBox1.DataSource = dt 
    ComboBox1.DisplayMember = "value" 
    ComboBox1.ValueMember = "id" 
End Using 

現在,您可以用這段代碼獲得id

ComboBox1.SelectedValue.ToString() 

而且你可以用這段代碼的文本:

ComboBox1.Text 
0

好吧,我現在用它和工程

Dim connetionString As String = Nothing 
    Dim connection As MySqlConnection 
    Dim command As MySqlCommand 
    Dim adapter As New MySqlDataAdapter() 
    Dim ds As New DataSet() 
    Dim i As Integer = 0 
    Dim sql As String = Nothing 
    'connetionString = "Data Source=ServerName;Initial Catalog=databasename;User ID=userid;Password=yourpassword" 
    'sql = "select id,name from product" 
    sql = "SELECT id, CONCAT(name,' | ',id_maker,' | ',id_types) AS value FROM product ORDER BY name ASC" 
    'connection = New MySqlConnection(connetionString) 
    connection = New MySqlConnection(ConfigurationManager.ConnectionStrings("xCollectibles.My.MySettings.xcollectiblesConnectionString").ToString) 
    Try 
     connection.Open() 
     command = New MySqlCommand(sql, connection) 
     adapter.SelectCommand = command 
     adapter.Fill(ds) 
     adapter.Dispose() 
     command.Dispose() 
     connection.Close() 
     ComboBox1.DataSource = ds.Tables(0) 
     ComboBox1.ValueMember = "id" 
     ComboBox1.DisplayMember = "value" 



    Catch ex As Exception 
     MessageBox.Show("Can not open connection ! ") 
    End Try 

謝謝你..