PDA

View Full Version : پر کردن گرید توسط استور پروسیجر



a.khosroabadi
جمعه 27 آبان 1390, 16:24 عصر
سلام به همه دوستان
من یه گرید خالی دارم و یه تکست باکس
در رویداد TextChanged یه استور پروسیجر جستجو که در دیتا بیس نوشتم فراخوانی کردم به صورت زیر





SqlConnection objConnection = new SqlConnection();
try
{
objConnection.ConnectionString = "server=localhost;database=phonNumber;Integrated Security=true";
SqlCommand objCommand = new SqlCommand("SP_Update_Cosrumer", objConnection);
objCommand.CommandType = System.Data.CommandType.StoredProcedure;
objCommand.Parameters.AddWithValue("@CFN", fName.Text);
objCommand.Parameters.AddWithValue("@CLN", lName.Text);
objCommand.Parameters.AddWithValue("@CON", oName.Text);
objCommand.Parameters.AddWithValue("@S_Type", jName.Text);

objConnection.Open();
objCommand.ExecuteNonQuery();
objConnection.Close();
}


catch (SqlException e)
{
MessageBox.Show("Error accessing the database:{0}", e.Messa);
}


حالا میخوام با هر حرفی که وارد تکست باکس میکنم نتایج حاصل در گریدی که گذاشتم نمایش داده بشه
ممنون

sempay_ninjutsu
جمعه 27 آبان 1390, 17:08 عصر
خوب دوست عزیز این گرید شما باید مقدار دهی بشه.که برای اینکار بهتره از آداپتر و دیتا ست استفاده کنی.بعد از اینکه کامندت و اجرا کردی این مراحل را اضافه کن.(یعنی قبل از بستن کانکشن).با این دستورات حاصل نتیجه کوئریت رو میبینی.البته اگر کوئریت درست باشه.

SqlDataAdapter da=new SqlDataAdapter (objcommand);
DataSet ds=new DataSet ();
da.Fill(ds,"t1");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "t1";

موفق باشید

zarrinnegar
جمعه 27 آبان 1390, 21:12 عصر
من با linq کار میکنم اگه بدردت میخوره توضیح بدم
کار باهاش راحت تره

a.khosroabadi
شنبه 28 آبان 1390, 22:22 عصر
من از linq استفاده نکردم تا نمیدونم چجوری باید استفادش کنم

از دستور

dataGridView1.DataSource = null

استفاده کردم وقتی تیک چک باکس رو بر میدارم گرید حالی میشه ولی وقتی میزارم دوباره تیکشو دیگه گرید پر نمیشه
نمیدونم حالا باید چیکار کنم

zarrinnegar
شنبه 28 آبان 1390, 22:38 عصر
اگه بخوای از linq استفاده کنی مراحل زیر رو پیاده سازی کن

یک newitem بساز از نوع LinqDataClass
از server explorer که connection به sql زدی table ها رو drag کن به سمت چپ dbml و sp ها رو drag کن به سمت راست

حالا یک object از dataclass بساز
var lq = dataclass1();
بعدش sp رو فراخوانی کن
var dt=lq.sp_person_select.select();

بعدش به دیتاگرید وصل کن
datagridview1.datasource=dt;

a.khosroabadi
دوشنبه 30 آبان 1390, 19:12 عصر
بچه ها من مشکلم حل نشده هنوز اگه میشه کمکم کنید
میخوام وفتی تیک چک باکس رو میزارم گریدم پر شه و وقتی تیکشو بر میدارم خالی شه
الان این کارو انجام دادم با دستور بالا ولی دوباره که تیک چک باکس رو میزارم پز نمیشه گریدم.

و البته مشکلی که در اول تیپیک گذاشتم کماکان باقیه و نتونستم حلش کنم

mmd2009
دوشنبه 30 آبان 1390, 19:32 عصر
با سلام

به این صورت انجام بدید :

برای پر کردن گرید ویو :


const string conStrinf = @"Data Source=.\SQLeXpress;Initial Catalog=Test;Integrated Security=True";

var con = new SqlConnection(conStrinf);

var dba = new SqlDataAdapter("select * from tblUser", con);

_ds = new DataSet();

dba.Fill(_ds);

_view.Table = _ds.Tables[0];

dataGridView1.DataSource = _view;



اینم اشیای :


private DataSet _ds;

readonly DataView _view = new DataView();


اینم شرط ChechBox :


private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
dataGridView1.DataSource = checkBox1.Checked ? _view : null;
}



در چنین مواقعی استفاده از DataView خیلی بهتره

موفق باشید