listview, txt控件, label控件分别绑定Dataset中一个表, 这样在选中listview不同行时txt控件和label控件可显示绑定表不同列的内容.
 按钮触发事件以如下语句加入新记录. 发现增加表记录除在增加新记录同时老是将listview光梂所在那一行的记录也改为新记录内容了.
 如: 原来有"aaa","bbb","ccc"三条记录, listview选中了"bbb", 再增加"ddd"时, 变成了"aaa","ddd","ccc","ddd", 中间的"bbb"变成"ddd", 状态为选中
 
System.Data.DataSet   DSGlendene;
 System.Data.OleDb.OleDbDataAdapter daTreatment;
 //绑定代码
 lblTreatmentID.DataBindings.Add("Text", DSGlendene, "Treatment.TreatmentID");
 txtDescription.DataBindings.Add("Text", DSGlendene, "Treatment.Description");
 txtCost.DataBindings.Add("Text", DSGlendene, "Treatment.Cost");
 lstTreatments.DataSource = DSGlendene;
 lstTreatments.DisplayMember = "Treatment.Description";
 lstTreatments.ValueMember = "Treatment.Description";
 //增加行代码
 DataRow newTreatmentRow = dtTreatment.NewRow();
 newTreatmentRow["Description"] = txtDescription.Text;
 newTreatmentRow["Cost"] = Convert.ToDouble(txtCost.Text);
 dtTreatment.Rows.Add(newTreatmentRow);
 daTreatment.Update(DM.dtTreatment)

解决方案 »

  1.   

    增加 新行之后 重新为你的 listview 绑定数据源试试。
    另外你的 listview 并没有使用 DataBindings 方式。
      

  2.   

    daTreatment.Update(DM.dtTreatment); //这里的DM又从哪冒出来的
      

  3.   

    不要绑定,直接在listview的itemclick事件里面将当前行的文本传给文本框即可。
      

  4.   

    daTreatment.Update(DM.dtTreatment); 
    更正为
    daTreatment.Update(dtTreatment); 
      

  5.   

    你这做法有点奇怪,而且看着也还没完全看明白你的操作过程,应该是有些过程你跳过没说清楚。
    新增后直接保存到数据库就行,可以不用重新加载;默认在listview的最下面新增1行记录.
      

  6.   

    代码在如下链接, 下载运行需要手动将access数据库路径链接更改一下.
    http://pan.baidu.com/s/1jGA7bWq