2017-04-25 41 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 

谢谢你..