将 DataRow foundRow 与 DataTable 一起使用时出现未处理的异常

Unhandled Exception When Using DataRow foundRow With DataTable

同样,这是关于 DataTable,而不是数据库。

几件事:

MainDataTable.cs(其中包含 DataTable

public class MainDataTable
{
    public static DataTable dataMain = new DataTable("Customer Info Database");

    public static void CreateTable1()
    {
        dataMain.Columns.Add("CustID", typeof(int));
        dataMain.PrimaryKey = new DataColumn[] { dataMain.Columns["ID"] };
        dataMain.Columns.Add("CustName", typeof(string));
        dataMain.Columns.Add("CustAge", typeof(int));
        dataMain.Columns.Add("CustAlign", typeof(string));      
    }

    public static void EnterNewRows(int CustID, string CustName, int CustAge, string CustAlign)
    {
        dataMain.Rows.Add(CustID, CustName, CustAge, CustAlign);
    }
}

Page1.xaml.cs

public partial class Page1 : Page
{
    public Page1()
    {
        InitializeComponent();
    }

    private void Finished_Button(object sender, RoutedEventArgs e)
    {
        int ParseID;
        int ParseAge;
        bool Parse1 = int.TryParse(txtID.Text, out ParseID);
        bool Parse2 = int.TryParse(txtAge.Text, out ParseAge);           

        MainDataTable.CreateTable1();
        MainDataTable.EnterNewRows(ParseID, txtName.Text, ParseAge, txtAlignment.Text);

        this.NavigationService.Navigate(new Page0());

Page2.xaml.cs

public partial class Page2 : Page
{
    public Page2()
    {
        InitializeComponent();
    }

    private void SearchBtn1Clk(object sender, RoutedEventArgs e)
    {

        int IDFind = Convert.ToInt32(searchIdTxtBox.Text);
        DataRow foundRow = MainDataTable.dataMain.Rows.Find(IDFind);

        if (foundRow != null)
        {
            MessageBox.Show(foundRow[0].ToString());
        }

        else
        {
            MessageBox.Show("No Customer Found with ID:" + IDFind);
        }
    }
}

这些值从 Page1.xaml.cs 文本输入正确地存储在 table 中(我知道这一点是因为我检查了它后面的行 运行),但是当点击搜索时,这个错误发生:

System.Data.dll 中发生了 'System.Data.MissingPrimaryKeyException' 类型的未处理异常 附加信息:Table 没有主键。

您没有名为 ID 的列。它叫做 CustID。不是吗?更新此行并重试。

 dataMain.PrimaryKey = new DataColumn[] { dataMain.Columns["CustID"] };

除非你想完成其他事情。