自己定义ComboBox下拉框,来做自动完成源(条件筛选数据),结果报错。System.FormatException:”输入字符串的格式不正确”

XAML代码:
<ctr:AutoComplete x:Name="TB_SPTM" Grid.Column="4" Grid.Row="2"Height="20" PatternChanged="TB_SPTM_PatternChanged"/>
在网上找类似的问题,说是有空的字符串。
C#错误代码:
我在for循环里面加了var a =db.Rows[i][1].ToString();来看我的字符串是什么类型
for (int i = 0; i <db.Rows.Count; i++)
{
var a = db.Rows[i][1].ToString();
dataSource[i] = new combobox();
dataSource[i].StaffID =Convert.ToInt32(db.Rows[i][1].ToString().Trim());
dataSource[i].Name =db.Rows[i][2].ToString().Trim();
}
结果a=char类型,居然不是int类型,反而出现char类型。
SQL数据库代码:
---查询员工下拉框
IF(@type='Staff_PurchasingManagement')
BEGIN
SELECT StaffID,
RTRIM(StaffName)AS Name
FROM Staff
END
最后发现C#代码和SQL数据代码的数据不等于,C#代码的StaffID等于SQL数据代码Name,
结果是for循环里的[1]和[2]出现问题,把[1]和[2]改为[0]和[1],这样C#和SQL的字段就对应了
C#正确代码:
DataTable db= myFrm_SupplierInformationClient.Staff_PurchasingManagement().Tables[0];
TB_SPTM.ItemsSource = db.DefaultView;
TB_SPTM.DisplayMemberPath = "Name";
TB_SPTM.SelectedValuePath = "StaffID";
dataSource = new combobox[db.Rows.Count];
//给下拉框数组绑定数据
for(int i = 0; i < db.Rows.Count; i++)
{
var a = db.Rows[i][1].ToString();
dataSource[i] = new combobox();
dataSource[i].StaffID =Convert.ToInt32(db.Rows[i][0].ToString().Trim());
dataSource[i].Name = db.Rows[i][1].ToString().Trim();
}
自动完成源(条件筛选数据)页面:


XAML代码:
<ctr:AutoComplete x:Name="TB_SPTM" Grid.Column="4" Grid.Row="2"Height="20" PatternChanged="TB_SPTM_PatternChanged"/>
在网上找类似的问题,说是有空的字符串。
C#错误代码:
我在for循环里面加了var a =db.Rows[i][1].ToString();来看我的字符串是什么类型
for (int i = 0; i <db.Rows.Count; i++)
{
var a = db.Rows[i][1].ToString();
dataSource[i] = new combobox();
dataSource[i].StaffID =Convert.ToInt32(db.Rows[i][1].ToString().Trim());
dataSource[i].Name =db.Rows[i][2].ToString().Trim();
}
结果a=char类型,居然不是int类型,反而出现char类型。
SQL数据库代码:
---查询员工下拉框
IF(@type='Staff_PurchasingManagement')
BEGIN
SELECT StaffID,
RTRIM(StaffName)AS Name
FROM Staff
END
最后发现C#代码和SQL数据代码的数据不等于,C#代码的StaffID等于SQL数据代码Name,
结果是for循环里的[1]和[2]出现问题,把[1]和[2]改为[0]和[1],这样C#和SQL的字段就对应了
C#正确代码:
DataTable db= myFrm_SupplierInformationClient.Staff_PurchasingManagement().Tables[0];
TB_SPTM.ItemsSource = db.DefaultView;
TB_SPTM.DisplayMemberPath = "Name";
TB_SPTM.SelectedValuePath = "StaffID";
dataSource = new combobox[db.Rows.Count];
//给下拉框数组绑定数据
for(int i = 0; i < db.Rows.Count; i++)
{
var a = db.Rows[i][1].ToString();
dataSource[i] = new combobox();
dataSource[i].StaffID =Convert.ToInt32(db.Rows[i][0].ToString().Trim());
dataSource[i].Name = db.Rows[i][1].ToString().Trim();
}
自动完成源(条件筛选数据)页面:
