C# 从组合框中获取字符串值以用于数据库比较的最佳方法

C# 从组合框中获取字符串值以用于数据库比较的最佳方法,c#,asp.net,c#-4.0,combobox,C#,Asp.net,C# 4.0,Combobox,我有一个在表单加载事件中填充的组合框。当然,这些值是字符串格式的。他们的信息在组合框中显示为1-info。我想将第一个数字与数据库中的值进行比较。然后根据找到的值填充表单上的字段。这是我到目前为止所拥有的。我已经能够把它转换回int 32了 if (cmboBoxPreviousVersion.SelectedItem != null) { string[] s = cmboBoxPreviousVersion.Items[cmboBoxPreviousV

我有一个在表单加载事件中填充的组合框。当然,这些值是字符串格式的。他们的信息在组合框中显示为1-info。我想将第一个数字与数据库中的值进行比较。然后根据找到的值填充表单上的字段。这是我到目前为止所拥有的。我已经能够把它转换回int 32了

if (cmboBoxPreviousVersion.SelectedItem != null)
        {
            string[] s = cmboBoxPreviousVersion.Items[cmboBoxPreviousVersion.SelectedIndex].ToString().Split(' ');
            int id = Convert.ToInt32(s[0]);


            Item.FormatID = data.FormatID;
            Item.FormatName = data.FormatName;
            Item.FormatDescription = data.FormatDescription;
            Item.StockID = data.StockID;
            Item.PrintPlantCode = (bool)data.PrintPlantCode;
            Item.PrintWeight = (bool)data.PrintWeight;
            Item.PrintPrice = (bool)data.PrintPrice;

            rChkBoxPlantCode.Checked = Item.PrintPlantCode;
            rChkBoxPrintPrice.Checked = Item.PrintPrice;
            rChkBoxWeight.Checked = Item.PrintWeight;
            cmboBoxStock.Items.Add(Item.StockID);
            rTxtBoxDescription.Text = Item.FormatDescription;
        }
        rChkBoxPlantCode.Enabled = false;
        rChkBoxPrintPrice.Enabled = false;
        rChkBoxWeight.Enabled = false;
有什么建议吗?谢谢大家。如果你需要任何其他信息或澄清让我知道

添加了combox填充方法

try
        {
            List<PreviousVersionData> listID = PreviousVersionData.getDatabase();
            if (listID != null)
            {
                foreach (PreviousVersionData l in listID)
                {
                    cmboBoxPreviousVersion.Items.Add(string.Format("{0} - {1}", l.FormatID, l.FormatName));

                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
试试看
{
List listID=PreviousVersionData.getDatabase();
if(listID!=null)
{
foreach(listID中的PreviousVersionData l)
{
添加(string.Format(“{0}-{1}”,l.FormatID,l.FormatName));
}
}
}
捕获(例外情况除外)
{
MessageBox.Show(例如Message);
}
我会使用:

int id;
bool result = Int32.TryParse(s[0], out id);
现在,
result
如果能够解析该值而不引发异常,则具有true/false。

我将使用:

int id;
bool result = Int32.TryParse(s[0], out id);

现在,
result
如果能够解析值,则具有true/false,不引发异常。

如果你不用于其他目的,那么最好将数字存储在那里。

如果你不用于其他目的,那么最好将数字存储在那里。

为什么不将数字保留在combobox的id字段中?@jim我使用一个类来运行查询。我将使用填充方法更新“他们的信息显示为1-info…我想获取第一个数字并将其与我的数据库中的值进行比较。”但您在“不是”-”上拆分。此外,您将获取空格前的每个字符,而不仅仅是第一个数字。你是指数字吗?你的实际问题是什么。我不清楚。组合框中的每个项目都有文本和值属性。该值通常用于保留项的ID,以便您可以使用它来标识所选项。@Harrison正在试图找出一种用数据库中的数据填充表单字段的方法。“-”上的分隔符很有用,我会这样做的。我不知道如何实现它。为什么不在combobox的id字段中保留数字?@jim我使用一个类来运行查询。我将使用填充方法更新“他们的信息显示为1-info…我想获取第一个数字并将其与我的数据库中的值进行比较。”但您在“不是”-”上拆分。此外,您将获取空格前的每个字符,而不仅仅是第一个数字。你是指数字吗?你的实际问题是什么。我不清楚。组合框中的每个项目都有文本和值属性。该值通常用于保留项的ID,以便您可以使用它来标识所选项。@Harrison正在试图找出一种用数据库中的数据填充表单字段的方法。“-”上的分隔符很有用,我会这样做的。我不确定如何实现它。为什么要使用该方法而不是我的方法?@charmingferno TryParse将始终处理异常,因为您没有可转换字符串。为什么要使用该方法而不是我的方法?@charmingferno TryParse将始终处理异常,因为您没有可转换字符串。