【发布时间】:2018-05-13 05:22:33
【问题描述】:
我在数据库中有一个“卡片”表,其中包含“卡片”和“客户”表。 Cards 包含 CustomerID、Number 和 Ammount。之后我用ADO.NET来利用DataGrid、TextBox等。
我删除了 DataGrid 和 TextBox 作为搜索条件。当按下按钮时,DataGrid 会加载 LINQ:
string searchString = this.CustomerIDTextBox.Text();
using (var ctx = new bdCustomerEntities()){
var result = from t in ctx.Cards
join t_customer in ctx.Customer on t.CustomerID equals t_customer.id
where t.CustomerID == searchString
select new
{
number = t.number,
ammount = t.ammount,
CustomerID = t.Customer.id
};
/*Fill datagrid*/
this.CardsDataGrid.ItemsSource = result.ToList();
}
当我在CardsDataGrid 中创建MouseDoubleClick 事件来选择行并填充两个TextBoxes 时,问题就出现了,一个是Ammount 数据,另一个是Number。
我尝试了这段代码,但无法在TextBoxes 中显示数据:
Cards selected = this.cardsDataGrid.SelectedItem as Cards;
this.numberTextBox.Text = selected.Number.ToString();
this.ammountTextBox.Text = seleccionado.Ammount.ToString();
我在Cards selected = ... 行之后创建了MessageBox.Show 以查看SelectedItem 上的内容,它显示如下:
{number = 13, ammount = 3500 , CustomerID = 1456 }
我的问题是,我无法“提取”SelectedItem,因为创建的格式可能是 LINQ? - 并将其放入TextBoxes。
当我对上述代码进行此更改时,我注意到了一点:
Cards selected = (Cards) this.cardsDataGrid.SelectedItem ;
它显示:
System.InvalidCastException:无法转换类型的对象 '[System.Int32,System.Int32,System.String]' 输入 'bdCustomer.Cards'。
【问题讨论】:
标签: c# .net linq datagrid textbox