winform修改listview数据问题

鲜蛋网 2013-12-10 02:14:55
//修改窗体
//修改窗体加载时,同时加载修改的数据
private void FrmUpdateBook_Load(object sender, EventArgs e)
{
FrmMain fm = new FrmMain();
BindTypeAndPub();
txtUpIsbn.Text = _upbookisbn;
txtUpBookName.Text = _upbookname;
txtUpAuthor.Text = _upauthor;
txtUpBookClick.Text = _upbookclicks.ToString();
txtUpBookCount.Text = _upbookcount.ToString();
txtUpBookIntro.Text = _upbookintru;
txtUpBookPrice.Text = _upbookprice.ToString();
txtUpBookTOC.Text = _upbooktoc;
txtUpWordCount.Text = _upbookwordcount.ToString();
cmbUpPub.Text= _uppublisher;
cmbUpType.Text = _upbooktype;
dtpUp.Value =Convert.ToDateTime( _uppubdate);
}

//修改图书的方法
public void UpdateBookShow()
{
BookInfo book = new BookInfo();
book.ISBN = this.txtUpIsbn.Text;
book.BookName = this.txtUpBookName.Text;
book.Author = this.txtUpAuthor.Text;
book.BookClicks = Convert.ToInt32(this.txtUpBookClick.Text);
book.BookCount = Convert.ToInt32(this.txtUpBookCount.Text);
book.BookIntru = this.txtUpBookIntro.Text;
book.BookPrice = Convert.ToDouble(this.txtUpBookPrice.Text);
book.BookStatus = BookStatus.Normal;
book.WordCount = Convert.ToInt32(this.txtUpWordCount.Text);
book.PubDate = this.dtpUp.Value;
book.TOC = this.txtUpBookTOC.Text;
book.PubId = Convert.ToInt32(this.cmbUpPub.SelectedValue);
book.TypeId = Convert.ToInt32(this.cmbUpType.SelectedValue);

bim.UpdateBook(book);
}


//主窗体
 //弹出修改窗体的方法
public void BindUpdateBook()
{
FrmUpdateBook fu = new FrmUpdateBook();
string isbn = lsvBook.SelectedItems[0].Text;
BookInfoManager bookinfomanager = new BookInfoManager();
BookTypeManager booktypemanager = new BookTypeManager();
PublisherManager pub = new PublisherManager();
Publisher publisher = new Publisher();
BookType booktype = new BookType();
BookInfo book = bookinfomanager.GetBookByISBN(isbn);
fu._upbookisbn = lsvBook.SelectedItems[0].Text;
fu._upbookname = lsvBook.SelectedItems[0].SubItems[1].Text;
fu._upauthor = lsvBook.SelectedItems[0].SubItems[2].Text;
fu._upbooktype = lsvBook.SelectedItems[0].SubItems[3].Text;
fu._upbookprice = Convert.ToDouble(lsvBook.SelectedItems[0].SubItems[4].Text);
fu._uppublisher = lsvBook.SelectedItems[0].SubItems[5].Text;
fu._uppubdate = lsvBook.SelectedItems[0].SubItems[6].Text;
fu._upbookclicks = book.BookClicks;
fu._upbookcount = book.BookCount;
fu._upbookintru = book.BookIntru;
fu._upbooktoc = book.TOC;
fu._upbookwordcount = book.WordCount;
fu.Show();


}



可以实现修改,但是选中一条修改后,数据库的所有数据都被修改成相同的数据

求解决办法





同时求修改后,主窗体的listview进行刷新的方法
...全文
313 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
鲜蛋网 2013-12-10
  • 打赏
  • 举报
回复
图片问题还是没有解决,但是刷新解决了,很感谢。。。。
智商余额不足 2013-12-10
  • 打赏
  • 举报
回复
listview刷新: 修改图书窗口FrmUpdateBook 添加一个事件

public event EventHandler UpdateBookInfo;

public void UpdateBookShow()
{
    .....
    .....
  // 添加
    if(UpdateBookInfo!=null)
        UpdateBookInfo(this,null);
}
主窗体:在BindUpdateBook添加注册事件代码

public void BindUpdateBook()
{
     FrmUpdateBook fu = new FrmUpdateBook();
     fu.UpdateBookInfo+=FrmUpdateBook_UpdateBookInfo;

}

void FrmUpdateBook_UpdateBookInfo(object sender,EventArgs e)
{
   //调用你绑定listview的方法
}
智商余额不足 2013-12-10
  • 打赏
  • 举报
回复
可以这样写

string PicName = txtUpIsbn.Text;
string fileName = this.txtUpPicFile.Text;

Image image = Image.FromFile(fileName);
Bitmap saveImage = new Bitmap(image);
image.Dispose();
saveImage.Save("Images/" + PicName + fileName.Substring(fileName.LastIndexOf('.')),saveImage.RawFormat);
saveImage.Dispose();
智商余额不足 2013-12-10
  • 打赏
  • 举报
回复
前面那段代码fsClient fsServer是同一个文件流的时候就会发生异常了
鲜蛋网 2013-12-10
  • 打赏
  • 举报
回复
OK,根据你的方法已经解决了。 但是我在重新修改上传图片的时候提示 文件“H:\项目备份\陈斌\EastBookManagement\EastBookManagement\EastBookManagement\bin\Debug\Images\9787111129431.jpg”正由另一进程使用,因此该进程无法访问此文件。 有人说,读取图片的时候不要用绝对路径,直接缓存读取,怎么回事? //修改时候修改图片的代码
private void btnUp_Click(object sender, EventArgs e)
        {
            
            string PicName = txtUpIsbn.Text;
            string fileName = this.txtUpPicFile.Text;
            using (FileStream fsClient = new FileStream(fileName, FileMode.OpenOrCreate))
            {
                using (FileStream fsServer = new FileStream("Images/" + PicName + fileName.Substring(fileName.LastIndexOf('.')), FileMode.Create))
                {
                    fsClient.CopyTo(fsServer);
                }
            }
            

            UpdateBookShow();
            MessageBox.Show("修改成功", "提示");
            this.Close();
        }
//主窗体获取的图片代码
 public void ShowListView()
        {
           
            string isbn = lsvBook.SelectedItems[0].Text;
            BookInfoManager bookinfomanager = new BookInfoManager();
            BookTypeManager booktypemanager = new BookTypeManager();
            PublisherManager pub = new PublisherManager();
            Publisher publisher = new Publisher();
            BookType booktype = new BookType();
            BookInfo book = bookinfomanager.GetBookByISBN(isbn);
            textBox1.Text = book.BookName.ToString();
            textBox2.Text = book.Author.ToString();
            lblPub.Text = book.Publisher.PubName.ToString();
            lblPubDate.Text = book.PubDate.ToShortDateString();
            lblClicks.Text = book.BookClicks.ToString();
            lblPrice.Text = book.BookPrice.ToString();
            picBook.Image = Image.FromFile(("Images\\"+book.ISBN+".jpg"));
            lblWordCount.Text = book.WordCount.ToString();
            lblType.Text = book.BookType.TypeName.ToString();
            lblCount.Text =book.BookCount.ToString();
            txtTOC.Text = book.TOC.ToString();
            txtInstru.Text = book.BookIntru.ToString();
        }
还可不可以给我说下修改完后,如何让主窗体的listview同时刷新数据 非常感谢耐心回答
智商余额不足 2013-12-10
  • 打赏
  • 举报
回复

"update BookInfo set BookName='" + book.BookName + "',Author='" + book.Author + "',PubDate='" + book.PubDate + "',WordCount='" + book.WordCount + "',BookIntru='" + book.BookIntru + "',BookPrice='" + book.BookPrice + "',TypeId='" + book.TypeId + "',PubId='" + book.PubId + "',TOC='" + book.TOC + "',BookStatus='" + (int)book.BookStatus + "',BookCount='" + book.BookCount + "',BookClicks='" + book.BookClicks + "' where ISBN='" + book.ISBN + "'"
鲜蛋网 2013-12-10
  • 打赏
  • 举报
回复
public int Update(BookInfo book)
        {
            //补齐
            string sql = string.Format("update BookInfo set BookName='" + book.BookName + "',Author='" + book.Author + "',PubDate='" + book.PubDate + "',WordCount='" + book.WordCount + "',BookIntru='" + book.BookIntru + "',BookPrice='" + book.BookPrice + "',TypeId='" + book.TypeId + "',PubId='" + book.PubId + "',TOC='" + book.TOC + "',BookStatus='" + (int)book.BookStatus + "',BookCount='" + book.BookCount + "',BookClicks='" + book.BookClicks + "'");
            int row = helper.RunCommand(sql);
            return row;
        }
智商余额不足 2013-12-10
  • 打赏
  • 举报
回复
去你那dal层去看看 是不是忘了 update ..... where isbn=几了
鲜蛋网 2013-12-10
  • 打赏
  • 举报
回复
//修改图书
        public bool UpdateBook(BookInfo book)
        {
            return bis.Update(book) > 0;
        }
我用的三层结构
周美文 2013-12-10
  • 打赏
  • 举报
回复
代码跟踪一下就见分晓
sj490790083 2013-12-10
  • 打赏
  • 举报
回复
sql语句写错了吧
智商余额不足 2013-12-10
  • 打赏
  • 举报
回复
你应该发 bim.UpdateBook(book);实现细节上来
鲜蛋网 2013-12-10
  • 打赏
  • 举报
回复
在线等,求大神解决

110,499

社区成员

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

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

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