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;
}

...全文
74 点赞 收藏 6
写回复
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不但没能显示出数据,更别提怎么让用户可填写它,更新至数据库了
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.5w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告