WPF关于用DataGrid实现填写数据更新到数据库的方法请教

beautiful_melody 2015-12-16 03:01:23

<DataGrid Name="myDataGrid" AutoGenerateColumns="False" Margin="10,30,10,10" >
<DataGrid.Columns>
<DataGridTextColumn Header="主机厂" IsReadOnly="True" Binding="{Binding CustomerName}" />
<DataGridTextColumn Header="产品名称" IsReadOnly="True" Binding="{Binding ProductName}" />
<DataGridTextColumn Header="产品图号" IsReadOnly="True" Binding="{Binding ProductNum}" />
<DataGridTemplateColumn Header="订单数量" IsReadOnly="False">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Count}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

目的是前三列“主机厂” “产品名称” “产品图号直接显示数据库值,而第4列是一个TextBox
不但能 显示数据库值,还能更改数据库值。

public class MyViewClassForSW
{
public string CustomerName { get; set; }
public string ProductName { get; set; }
public string ProductNum { get; set; }
public string Count { get; set; }
}
public void CreateDataGrid(ProPeriod period)
{
List<MyViewClassForSW> myclassList = new List<MyViewClassForSW>();
IOrderPlan channel = ChannelFactory<IOrderPlan>.CreateChannel(MyEndPoint.OurTcpBingding, MyEndPoint.ProEndTcpAddress);
foreach (var itemproduct in channel.ReturnProductList())
{
string customername = channel.GetDwgCustomerByProductID(itemproduct.ProductID).Name;
string productname = itemproduct.Name;
string productnum = itemproduct.ModelNum;
string count = channel.GetProOrderByProductIDandPeriodID(itemproduct.ProductID, period.PeriodID).Count.ToString();
myclassList.Add(new MyViewClassForSW() {CustomerName=customername,ProductName=productname,ProductNum=productnum,Count=count });
}

myDataGrid.ItemsSource = myclassList;
}

...全文
302 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
exception92 2015-12-16
  • 打赏
  • 举报
回复
引用 5 楼 beautiful_melody 的回复:
[quote=引用 3 楼 duanzi_peng 的回复:] [quote=引用 1 楼 beautiful_melody 的回复:] 现在的问题是每行的TextBox不但没能显示出数据,更别提怎么让用户可填写它,更新至数据库了
是的。你说的太对了,可是 你只会说。[/quote] 我现在是干急没思路了[/quote] -》不用什么思路,你只需去网上查询 一下 WPF 数据驱动
beautiful_melody 2015-12-16
  • 打赏
  • 举报
回复
引用 3 楼 duanzi_peng 的回复:
[quote=引用 1 楼 beautiful_melody 的回复:] 现在的问题是每行的TextBox不但没能显示出数据,更别提怎么让用户可填写它,更新至数据库了
是的。你说的太对了,可是 你只会说。[/quote] DataGrid中的每一行就是体现一个MyViewClassForSW对象,现在对象的Count属性投送不到TextBox.Text属性上,不知道什么原因,我之所以设置<DataGridTemplateColumn Header="订单数量" IsReadOnly="False">目的是让用户还能修改该TextBox.Text属性,然后我添加一个按钮单击事件,把客户更改后的MyViewClassForSW对象都更新回数据库
beautiful_melody 2015-12-16
  • 打赏
  • 举报
回复
引用 3 楼 duanzi_peng 的回复:
[quote=引用 1 楼 beautiful_melody 的回复:] 现在的问题是每行的TextBox不但没能显示出数据,更别提怎么让用户可填写它,更新至数据库了
是的。你说的太对了,可是 你只会说。[/quote] 我现在是干急没思路了
exception92 2015-12-16
  • 打赏
  • 举报
回复
你知道 在xaml种使用Binding 模式的集合类 要实现什么样的接口,什么样的方法么? 不知道 先去查查
exception92 2015-12-16
  • 打赏
  • 举报
回复
引用 1 楼 beautiful_melody 的回复:
现在的问题是每行的TextBox不但没能显示出数据,更别提怎么让用户可填写它,更新至数据库了
是的。你说的太对了,可是 你只会说。
beautiful_melody 2015-12-16
  • 打赏
  • 举报
回复
现在的问题是每行的TextBox不但没能显示出数据,更别提怎么让用户可填写它,更新至数据库了

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧