百分求WPF中LISTVIEW问题解答

luckapple2 2008-12-01 05:05:41
wpf中listview绑定了数据库中的一张表显示数据。我想在listview中对某些数据进行修改后传回数据库。
我共有两个子段ID跟NAME。NAME为可修改的。在每行后跟一个Button。在修改完数据单击button后将这行修改后的数据保存到数据库中。
1。我现在就是不知道怎么才能单击button后能把对应行修改的数据传回到数据库中。不知道怎么找到对应行,也不知道怎么把那行修改的那个字段的值传回去?
2。还有个问题就是怎么在listview中显示网格呢?
XAML:
<ListView.View>
<GridView x:Name="grv">
<GridViewColumn Width="auto"
DisplayMemberBinding="{Binding Path=ID}" Header="ID">
</GridViewColumn>
<GridViewColumn Header="NAME" Width="AUTO" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Width="100" Text="{Binding Path=NAME,Mode=TwoWay}"></TextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="bianji" Width="AUTO" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Width="auto" Content="aaa" Click="Button_Click" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
...全文
360 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
高度之巅 2011-10-16
  • 打赏
  • 举报
回复
持续关注中
pb123 2011-07-19
  • 打赏
  • 举报
回复
mark....
jmtao 2008-12-03
  • 打赏
  • 举报
回复
下面写好的代码,把UpData()放到你的那个Button下面就可以了,其他要加的判断你自己加好了,
看看对你有没有用处

private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count < 1)
{
return;
}
ListViewItem LVI = this.listView1.SelectedItems[0];
this.textBoxID.Text = LVI.SubItems[0].Text;
this.textBoxName.Text = LVI.SubItems[1].Text;
}
//above:when choose a record of listView, the related data will show in "textBoxName";
//It is for modification

private void UdData()
{
string Connstr = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + Application.StartupPath + "\\数据库名字.mdb";
OleDbConnection Conn = new OleDbConnection(Connstr);
string Cmdstr;
OleDbCommand Cmd;
Cmdstr="UPDATE 表名 SET Name='"+textBoxName.Text+"'WHERE ID="+textBoxID.Text+"";
Conn.Open();
Cmd = new OleDbCommand(Cmdstr, Conn);
Cmd.ExecuteNonQuery();
Conn.Close();
}
jmtao 2008-12-03
  • 打赏
  • 举报
回复
this.listView1.FullRowSelect = true; //当选中一个记录时候,选中全行
this.listView1.GridLines = true; //显示网格

放到 Form 的 designer 一大堆listView设置的地方就可以了,或者在Form load的时候写进去也可以

给分哦
huangkui800 2008-12-03
  • 打赏
  • 举报
回复
加 顶
luckapple2 2008-12-02
  • 打赏
  • 举报
回复
可是现在还有个问题:
listview中textbox获得焦点改变数据时那行不是选中的那行怎么办?

zcandyly20211 2008-12-02
  • 打赏
  • 举报
回复
mark
Foxer 2008-12-02
  • 打赏
  • 举报
回复
捕获CurrentChanging事件

ICollectionView cv = CollectionViewSource.GetDefaultView(dataContext);
if (cv != null)
{
cv.CurrentChanged += new EventHandler(cv_CurrentChanged);
cv.CurrentChanging += new CurrentChangingEventHandler(cv_CurrentChanging);
}

Foxer 2008-12-01
  • 打赏
  • 举报
回复
SelectedItem是一个DataRowView,试一下

DataRowView drv = <ListViewName>.SelectedItem as DataRowView;
if(drv != null) Console.WriteLine(drv["NAME"]);
luckapple2 2008-12-01
  • 打赏
  • 举报
回复
用的是listview的DataContext绑定的
大家最好给点代码。
应该用什么属性呢?我试过SelectedItem,可是没写出来。
GTX280 2008-12-01
  • 打赏
  • 举报
回复
楼主是用什么方法绑定表中的数据的
luckapple2 2008-12-01
  • 打赏
  • 举报
回复
我等..
hm7921936 2008-12-01
  • 打赏
  • 举报
回复
mark晚上看
king19840811 2008-12-01
  • 打赏
  • 举报
回复
关注中

111,131

社区成员

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

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

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