PDA

View Full Version : ویرایش رکورد انتخابی در دیتاگریدویو



ahmadkavand
شنبه 11 خرداد 1392, 11:23 صبح
با سلام خدمت همه اساتید
من یه برنامه با visual studio 2008نوشتم که می یاد نام کتاب و نام ناشر و سال چاپ رو میگیره و توی کتابخونه درج می کنه

نمایش همه کتاب ها در پایین فرم بر عهده دیتا گرید ویو هست
توی دیتا گرید ویو دوتا دکمه گذاشتم.یکی حذف و یکی ویرایش

دکمه حذف رو خودم برنامه نویسی کردم ولی دکمه ویرایش رو نتونستم.هر چی به ذهنم میومد غلط بود
می خوام هر وقت کاربر روی دکمه ویرایش کلیک کرد نام کتاب و نام ناشر و سال نشر مربوط به اون رکورد رو توی تکس های مربرطه (تکس مربوط به نام کتاب و نام ناشر وسال نشر) قرار بده.سپس اونو ویرایش کنم و دوباره درج کنم
حالا از اساتید هر کی می تونه ممنون میشم کمکم کنه

این برنامه رو با برنامه نویسی سه لایه انجام دادم
یک کلاس به نام book داره
یک کلاس به نام data access layer داره
عکس مربوط به فرم رو attach میکنم











Class book




using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using System.Data.SqlClient;



namespace book1

{

class book

{

public string booknameclass;

public string nashernameclass;

public string yearclass;

DataAccessLayer dal = new DataAccessLayer();

public DataTable show_all_book()

{

DataTable dt = new DataTable();

string strsql = "select * from tbl_book";

dal.connect();

dt=dal.select(strsql);

return dt;

dal.disconnect();





}

public void add_book()

{

string strsql = "insert into tbl_book(namebook,namenasher,yearbook)values(N'{0} ',N'{1}',N'{2}')";

strsql=string.Format(strsql,this.booknameclass,thi s.nashernameclass,this.yearclass);

dal.connect();

dal.docommand(strsql);

dal.disconnect();

}

public DataTable searchbyname(string sql)

{

DataTable dt = new DataTable();

string strsql = "select * from tbl_book where namebook like N'%{0}%'";

strsql = string.Format(strsql,sql);

dal.connect();

dt=dal.select(strsql);

dal.disconnect();

return dt;





}

public DataTable searchbynasher(string sql)

{

DataTable dt = new DataTable();

string strsql = "select * from tbl_book where namenasher like N'%{0}%'";

strsql = string.Format(strsql, sql);

dal.connect();

dt = dal.select(strsql);

dal.disconnect();

return dt;





}

public DataTable searchbyyear(string sql)

{

DataTable dt = new DataTable();

string strsql = "select * from tbl_book where yearbook like N'%{0}%'";

strsql = string.Format(strsql, sql);

dal.connect();

dt = dal.select(strsql);

dal.disconnect();

return dt;





}

public DataTable deletebyidshow(int result)

{

string strsql = "delete from tbl_book where id={0}";

strsql = string.Format(strsql,result);

string strsql1 = "select * from tbl_book";

DataTable dt = new DataTable();

dal.connect();

dal.docommand(strsql);

dt =dal.select(strsql1);

dal.disconnect();

return dt;





}





}



}




















using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using System.Data.SqlClient;

using System.Data.Sql;





namespace book1

{

class DataAccessLayer

{

public SqlConnection con;

public SqlCommand cmd;

public SqlDataAdapter da;



public DataAccessLayer()

{

con=new SqlConnection();

cmd=new SqlCommand();

da=new SqlDataAdapter();

cmd.Connection = con;

da.SelectCommand = cmd;

}

public void connect()

{

con.ConnectionString=@"Data Source=.\SQLEXPRESS;AttachDbFilename=|datadirector y|\db_book1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

con.Open();

}

public void disconnect()

{

con.Close();

}

public void docommand(string sql)

{

cmd.CommandText=sql;

cmd.ExecuteNonQuery();

}

public DataTable select(string sql)

{

DataTable dt= new DataTable();

cmd.CommandText = sql;

da.Fill(dt);

return(dt);



}

public int scalercommand(string sql)

{

cmd.CommandText=sql;

int a=(int)cmd.ExecuteScalar();

return a;

}







//internal void select()

//{

// throw new NotImplementedException();

// }



internal void docommand()

{

throw new NotImplementedException();

}

}

}










کد های توی فرم

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;



namespace book1

{

public partial class Form1 : Form

{

public int result;

DataAccessLayer dal = new DataAccessLayer();

public Form1()

{

InitializeComponent();

}



private void Form1_Load(object sender, EventArgs e)

{

book b1 = new book();

dataGridView1.DataSource = b1.show_all_book();

}



private void btn_insert_Click(object sender, EventArgs e)

{

book b2 = new book();

b2.booknameclass = txt_namebook.Text;

b2.nashernameclass = txt_nasher.Text;

b2.yearclass = txt_year.Text;



b2.add_book();

MessageBox.Show("اطلاعات با موفقت در ج شد");

txt_year.Clear();

txt_nasher.Clear();

txt_namebook.Clear();

dataGridView1.DataSource = b2.show_all_book();



}



private void search_namebook_TextChanged(object sender, EventArgs e)

{

book b3=new book();

dataGridView1.DataSource = b3.searchbyname(txt_search_namebook.Text);

}



private void txt_search_nasher_TextChanged(object sender, EventArgs e)

{

book b4 = new book();

dataGridView1.DataSource = b4.searchbynasher(txt_search_nasher.Text);

}



private void txt_search_year_TextChanged(object sender, EventArgs e)

{

book b5 = new book();

dataGridView1.DataSource = b5.searchbyyear(txt_search_year.Text);

}







private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

{

if (dataGridView1.CurrentCell.Value.ToString().Trim() == "حذف")

{

book b6 = new book();

DialogResult dr;

dr = MessageBox.Show("آیا از حذف رکورد مورد نظر مطمئن هستید؟", "حذف", MessageBoxButtons.YesNo);

if (dr == DialogResult.Yes)

{

int result=(int)dataGridView1.CurrentRow.Cells["id"].Value;

dataGridView1.DataSource = b6.deletebyidshow(result);

}

}

ahmadkavand
شنبه 11 خرداد 1392, 11:41 صبح
-------------

R_khaleghi
شنبه 11 خرداد 1392, 12:37 عصر
-------------


سلام.
این که کاری نداره هر textbox رو جدا جدا bind کن به تک تک فیلدهای datagrid.
بعد میتونی از دستور آپدیت sql استفاده کنی و ویرایش کنی.

ahmadkavand
شنبه 11 خرداد 1392, 20:02 عصر
میشه دوستان یه کم بیشتر توضیح بدن
آخه توی سی شارپ مبتدی ام فعلا

R_khaleghi
یک شنبه 12 خرداد 1392, 00:30 صبح
میشه دوستان یه کم بیشتر توضیح بدن
آخه توی سی شارپ مبتدی ام فعلا

شما باید این کار رو انجام بدین:
این واسه اینه که bind کنی اطلاعاتت رو داخل textboxها:

if (Datagrid.SelectedRows.Count == 0)
{
Msg.Show(".اطلاعاتی در جدول ثبت نشده است", "خطا", MsgIcon.Error, MsgButton.Ok);

}
else
{
txt_Book_Name.Text = Datagrid.CurrentRow.Cells["Book_Name"].Value.ToString();
txt_Nasher.Text = Datagrid.CurrentRow.Cells["nasher"].Value.ToString();
sale_nashr.Text = Datagrid.CurrentRow.Cells["sale_nashr"].Value.ToString();
}

واسه ویرایشش هم باید این کار رو انجام بدی:

Str_Update="Update ،Tb_Book Set Book_Name= ' " + txt_Book_Name.Text +" ',nasher= ' " + nasher.text +" ', sale_nashr= ' " + sale_nashr.text + " ' ";
cmd.Connection = con;
cmd.CommandText = Str_Update;
cmd.ExecuteNonQuery();
ds.Clear();
da.SelectCommand.CommandText = "Select * From Tb_Book";
da.Fill(ds, "Tb_Book");
Datagrid.DataSource = ds;
Datagrid.DataMember = "Tb_Book";