PDA

View Full Version : پرکردن گریدویو با برنامه نویسی



boysilent
جمعه 12 خرداد 1391, 09:33 صبح
سلام دوستان :

من همیشه برای پرکذدن گریدویو از ویزارد استفاده می کنم میخواستم ببینم چطوری میشه کاری کرد که با برنامه نویسی پر بشه کسی میتونه با یه مثال کوچک کمک کنه ممنون

lida_2030
جمعه 12 خرداد 1391, 10:53 صبح
سلام دوست عزیز من همیشه 1 تابع اول برنامم تعریف میکنم و تو فرم لود اونا صدا میزنم
public void showtabl()
{
var q = from cu in da.Customers
select new { کد = cu.id, نام = cu.name, فامیلی = cu.family, آدرس = cu.address, تلفن = cu.tell };
dvg_manage.DataSource = q;
}

va2012
جمعه 12 خرداد 1391, 11:10 صبح
سلام دوست عزیز من همیشه 1 تابع اول برنامم تعریف میکنم و تو فرم لود اونا صدا میزنم
public void showtabl()
{
var q = from cu in da.Customers
select new { کد = cu.id, نام = cu.name, فامیلی = cu.family, آدرس = cu.address, تلفن = cu.tell };
dvg_manage.DataSource = q;
}

این دوستمون که نگفت با Linq کار میکنه فقط می خواد کارهای ویزارد رو با کدنویسی انجام بده.

va2012
جمعه 12 خرداد 1391, 11:14 صبح
این کدهای اتصال به دیتابیس :

OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Database.mdb");
OleDbCommand command = new OleDbCommand();
DataTable dataTable = new DataTable();
DataSet dataSet = new DataSet();
OleDbDataAdapter dataAdapter;


برای پر کردن دیتاگرید ویو هم در Load فرم بنویس : به جای دیتاست هم میتونی از دیتاتیبل استفاده کنی.

command.CommandText = "select * from TableName";
command.Connection = connection;
dataAdapter.Fill(dataSet);
dataGridView.DataSource = dataSet;
dataGridView.DataMember = "TableName";

boysilent
جمعه 12 خرداد 1391, 11:21 صبح
من با sql کار میکنم این قسمتهاش یک نا مفهومه برام
DataTable dataTable = new DataTable();
DataSet dataSet = new DataSet();
OleDbDataAdapter dataAdapter;

va2012
جمعه 12 خرداد 1391, 11:32 صبح
فرقی نمیکنه شما اول این رفرنس رو در قسمت using ها اضافه کن :

using System.Data.SqlClient

حالا در همه قسمت ها به جای OleDb بنویس SQL مثلا برای کامند این جوری می نویسی :

SqlCommand command = new SqlCommand();

va2012
جمعه 12 خرداد 1391, 11:35 صبح
درمورد کدهای زیر هم شما می تونی از dataSet یا از dataTable استفاده کنی و فقط با یکیش کار کنی. از dataAdapter هم به عنوان رابطی بین دیتابیس و دیتاست استفاده میشه.

DataTable dataTable = new DataTable();
DataSet dataSet = new DataSet();
OleDbDataAdapter dataAdapter;

boysilent
جمعه 12 خرداد 1391, 12:01 عصر
درمورد کدهای زیر هم شما می تونی از dataSet یا از dataTable استفاده کنی و فقط با یکیش کار کنی. از dataAdapter هم به عنوان رابطی بین دیتابیس و دیتاست استفاده میشه.

DataTable dataTable = new DataTable();
DataSet dataSet = new DataSet();
OleDbDataAdapter dataAdapter;

خوب الان این دیتا ست یا دیتا تیبل به چی وصل شده ؟؟؟؟؟؟

یکم گیج شدم اصلا الان اینجا هیچ ارتباطی برقرار نیست


command.CommandText = "select * from TableName";
command.Connection = connection;
dataAdapter.Fill(dataSet);
dataGridView.DataSource = dataSet;
dataGridView.DataMember = "TableName";

va2012
جمعه 12 خرداد 1391, 12:45 عصر
خوب مشخصه دیگه شما ابتدا یک کانکشن به دیتابیس ایجاد میکنی. بعد توی لود فرم با اجرای یک دستور command یک کوئری به یکی از جداول دیتابیس میزنی و اطلاعات داخل جدول دلخواهی از دیتابیس رو میخونی. حالا به وسیله دیتا آداپتور این اطلاعات رو به داخل دیتاست منتقل میکنی ( به اصطلاح دیتاست رو با دیتا آداپتور Fill می کنی)

حالا باید دیتا گرید ویو رو به دیتاست و به جدول دلخواهی از دیتاست متصل کنی که با ویژگی dataSource دیتاگرید ویو - یک منبع رو برای دیتاگرید ویو مشخص میکنی و با ویژگی dataMember هم جدول مورد نظر از دیتاست رو به دیتاگرید ویو متصل میکنی.

متوجه شدی؟

boysilent
جمعه 12 خرداد 1391, 16:29 عصر
دوستان خواهش میکنم کمک کنیدنوشته های این دوست عزیز هیچ کمکی به من نکرد این کدهای منه تا اینجایی که بلد بودم
string id = Request.QueryString["id"];
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=cndata;Integrated Security=True");
SqlCommand com = new SqlCommand("SELECT * FROM table_1 where id=@id",con);
SqlDataAdapter da = new SqlDataAdapter(com);
DataSet mydataset = new DataSet();
da.Fill(mydataset,اینجا؟؟؟);
GridView1.DataBind();


بقیشو واقعا موندم البته یه راهنمایی خوب میخوام

Saman Ice
جمعه 12 خرداد 1391, 17:03 عصر
string connstr = "Data Source=saman-pc;Initial Catalog=University;Integrated Security=True";
SqlConnection conn = new SqlConnection(connstr);
conn.Open();
SqlDataAdapter MsgAdapter = new SqlDataAdapter();
DataSet MsgDataSet = new DataSet();
MsgAdapter.SelectCommand = new SqlCommand();
MsgAdapter.SelectCommand.Connection = conn;
MsgAdapter.SelectCommand.CommandText = "select * From lesson Where ID like '%" + textBox1.Text + "%'";
MsgAdapter.SelectCommand.CommandType = CommandType.Text;
MsgAdapter.Fill(MsgDataSet, "lesson");
findlessongrid.DataSource = MsgDataSet;
findlessongrid.DataMember = "lesson";
conn.Close();

findlessongrid نام دیتاگرید هست
اینو هم بسته به نیازت تغییر بده
"select * From lesson Where ID like '%" + textBox1.Text + "%'"

boysilent
جمعه 12 خرداد 1391, 17:40 عصر
دوستان خواهش میکنم کمک کنیدنوشته های این دوست عزیز هیچ کمکی به من نکرد این کدهای منه تا اینجایی که بلد بودم
string id = Request.QueryString["id"];
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=cndata;Integrated Security=True");
SqlCommand com = new SqlCommand("SELECT * FROM table_1 where id=@id",con);
SqlDataAdapter da = new SqlDataAdapter(com);
DataSet mydataset = new DataSet();
da.Fill(mydataset,اینجا؟؟؟);
GridView1.DataBind();


بقیشو واقعا موندم البته یه راهنمایی خوب میخوام

مشکلش چیه بچه ها ؟

mahdi.bagheri
جمعه 12 خرداد 1391, 18:11 عصر
سلام دوست عزیز
من به شما پیشنهاد می کنم یه کتاب ADO.NET بخری و مطالعه کنی.

حالا برای کد شما
string id = Request.QueryString["id"];
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=cndata;Integrated Security=True");
SqlCommand com = new SqlCommand("SELECT * FROM table_1 where id=@id",con);


خوب حالا اینجا باید یه پارامتر تعریف کنی، چون دستورت اینطوری میگه


SqlParameter paramID = new SqlParameter("@id", SqlDbType.VarChar);
paramID.Value = id;


حالا این پارامتر رو اضافه می کنی به شئ command

com.Parameters.add(paramID);


حالا بقیه کدها

SqlDataAdapter da = new SqlDataAdapter(com);
DataSet mydataset = new DataSet();
da.Fill(mydataset)
GridView1.DataSource = mydataset;
GridView1.DataBind();


امیدوارم که کدها رو بفهمی.

boysilent
جمعه 12 خرداد 1391, 18:56 عصر
من باید بدون ado کار کنم برادر جااننننننن//عزیزم جیگرجانننن///بعدشم من نباید اونجوری با پارامتر بگیرم ؟؟من فقط گفتم مشکل این چیه


string id = Request.QueryString["id"];
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=cndata;Integrated Security=True");
SqlCommand com = new SqlCommand("SELECT * FROM table_1 where id=@id",con);
SqlDataAdapter da = new SqlDataAdapter(com);
DataSet mydataset = new DataSet();
da.Fill(mydataset,اینجا؟؟؟);
GridView1.DataBind();

boysilent
جمعه 12 خرداد 1391, 18:59 عصر
دوستان من ado نباید کار کنم ؟اوکییی
ااقای فخز اوری یه نیگاه به این کدم بتداز ببین این قسمت چی باید بنویسم ؟؟؟

string id = Request.QueryString["id"];
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=cndata;Integrated Security=True");
SqlCommand com = new SqlCommand("SELECT * FROM table_1 where id=@id",con);
com.Parameters.AddWithValue("@id", SqlDbType.VarChar);
SqlDataAdapter da = new SqlDataAdapter(com);
DataSet mydataset = new DataSet();
da.Fill(mydataset,اینجا؟؟؟);
GridView1.DataBind();

mahdi.bagheri
جمعه 12 خرداد 1391, 19:35 عصر
دوستان من ado نباید کار کنم ؟اوکییی
ااقای فخز اوری یه نیگاه به این کدم بتداز ببین این قسمت چی باید بنویسم ؟؟؟

string id = Request.QueryString["id"];
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=cndata;Integrated Security=True");
SqlCommand com = new SqlCommand("SELECT * FROM table_1 where id=@id",con);
com.Parameters.AddWithValue("@id", SqlDbType.VarChar);
SqlDataAdapter da = new SqlDataAdapter(com);
DataSet mydataset = new DataSet();
da.Fill(mydataset,اینجا؟؟؟);
GridView1.DataBind();

من که منظور شما رو نفهمیدم!!
شما میگی میخوای با برنامه نویسی گرید رو پر کنی، بعد میگی ADO نمی خوای استفاده کنی! پس چطوری میخوای پارامتر رو پاس کنی به دیتابیس یا بقیه کارا؟!!

کد زیر رو هم که میگی برای این استفاده میشه که یک اسم دلخواه به جدولی که کدت برمیگردونه بدی، برای زمانی خوبه که توی دیتاست چندتا جدول رو لود کردی بعد میتونی دیتاسورست رو انتخاب کنی با اون اسم!


da.Fill(mydataset, "table1");

boysilent
جمعه 12 خرداد 1391, 19:39 عصر
string id = Request.QueryString["id"];
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=cndata;Integrated Security=True");
SqlCommand com = new SqlCommand("SELECT * FROM table_1 where id=@id",con);
com.Parameters.AddWithValue("@id", SqlDbType.VarChar);
SqlDataAdapter da = new SqlDataAdapter(com);
DataSet mydataset = new DataSet();
da.Fill(mydataset);
GridView1.DataBind();

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

mahdi.bagheri
جمعه 12 خرداد 1391, 20:03 عصر
string id = Request.QueryString["id"];
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=cndata;Integrated Security=True");
SqlCommand com = new SqlCommand("SELECT * FROM table_1 where id=@id",con);
com.Parameters.AddWithValue("@id", SqlDbType.VarChar);
SqlDataAdapter da = new SqlDataAdapter(com);
DataSet mydataset = new DataSet();
da.Fill(mydataset);
GridView1.DataBind();

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

آیدی با کدوم value ارسال میشه؟ چون به پارامترت چیزی نمی فرستی! کد درست میشه این:

com.Parameters.AddWithValue("@id", id);

boysilent
جمعه 12 خرداد 1391, 21:03 عصر
نه بازم نشد برادر//دوستان بنظرتون در قسمت design همون قسمتی که اچ تی ام ال هست چیزی نمیخواد نوشته بشه؟

mahdi.bagheri
جمعه 12 خرداد 1391, 23:28 عصر
ای بابا، آقا پس چرا DataSource رو ست نکردی، من که تو کد قبلی نوشته بودم!

GridView1.DataSource = mydataset;
GridView1.DataBind();

boysilent
پنج شنبه 18 خرداد 1391, 17:02 عصر
دوستان عزیز من متوجه شدم //خیلی ممنون ولی نمیدونم چرا پر نمیشه به این کد بنده دقت کنید؟؟

textBox1.Text=txtyear.Text+"/"+txtmonth.Text+"/"+txtday.Text;
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=hesabdar;Integrated Security=True");
con.Open();
SqlCommand com = new SqlCommand("SELECT * FROM factor WHERE idfactor='"+txtidfact.Text+"' AND '"+textBox1.Text+"'",con);
SqlDataAdapter da = new SqlDataAdapter(com);
DataSet ds = new DataSet();
da.Fill(ds);
dataGridView1.DataSource = ds;


البته به sql هم گیر میده ودر قسمت fiil کردن توقف میکنه؟

ahmadreza517
پنج شنبه 18 خرداد 1391, 17:37 عصر
به نام تنها برنمامه نویس هستی
سلام ,

نکته خیلی مهم در مورد این دستور

SqlCommand com = new SqlCommand("SELECT * FROM factor WHERE idfactor='"+txtidfact.Text+"' AND '"+textBox1.Text+"'",con);



از این روش استفاده نکن برای مقداردی فیلدها . برای جلو گیری از Inject . از پارامتر ها استفاده کن.

کد بالا درست (با پارامتر ها اصلاحش کن)

و اما این کد

da.Fill(ds);


معنی این کد این است که

پر کن . برای مثال Dataset نمونه سازی شده یا همان (ds) از چه اطلاعاتی .
از اطلاعات جدول شما ره 1 که می شه



da.Fill(ds,"table1");

boysilent
پنج شنبه 18 خرداد 1391, 18:07 عصر
ممنون ولی ما فقط یه جدول داریم//فک نکنم نیازی باشه//برنامه دیگه خطا نداره و تنها مشکل اینه که DATABIND رو اصلا نمیشناسه //زیرش قرمز میشه//اصلا توی خاصیت ها نیست؟

ahmadreza517
پنج شنبه 18 خرداد 1391, 18:24 عصر
اصلا نگران نباش

binddata برای asp.net

اینو اضافه کن



dataGridView1.DataBindings.Clear();
dataGridView1.DataBindings.Add(new Binding("datasource",ds,"table1"));



اسم جدولتو جایگزین کن .

boysilent
پنج شنبه 18 خرداد 1391, 18:29 عصر
نشد داداش ؟؟به دیتا سورس گیر میده ؟؟
راه دیگه ای نداره ؟؟بنظرم باشه ها؟

ahmadreza517
پنج شنبه 18 خرداد 1391, 18:51 عصر
از این استفاده کن

boysilent
پنج شنبه 18 خرداد 1391, 18:56 عصر
ذوست عزیز شما زحمت کشیدی ولی من میخوام کذهای خودمو کامل کنم و چیزی بفهمم //وگرنه کد اماده که در وب زیاد هست/دوست عزیز

ahmadreza517
پنج شنبه 18 خرداد 1391, 19:09 عصر
کجا شو متوجه نمی شیید

کد ها خیلی ساده هستند

به این جا سر بزن

howprg.blogfa.com (http://barnamenevis.org/howprg.blogfa.com)

در زمینه Ado.Net تحقیق کنید

boysilent
پنج شنبه 18 خرداد 1391, 19:55 عصر
دوستان بنظرتون این برنامه رو چطوری میتونم کامل کنم یعنی راهی نداره؟

ahmadreza517
پنج شنبه 18 خرداد 1391, 21:07 عصر
با هزارتا راه می تونید این کارو انجام بدید

از linq to sql استفاده کن

boysilent
پنج شنبه 18 خرداد 1391, 21:14 عصر
دوستان کامل شد
ککم.ن از لطف تون
ولی الان همه فیلد ها میاد و هدر ها هم انگلیشه باا برنامه نویسی میشه کاری کرد یا باید از طریق ویزارد؟؟؟

ahmadreza517
پنج شنبه 18 خرداد 1391, 21:27 عصر
دوستان کامل شد
ککم.ن از لطف تون
ولی الان همه فیلد ها میاد و هدر ها هم انگلیشه باا برنامه نویسی میشه کاری کرد یا باید از طریق ویزارد؟؟؟


از این استفاده کن



dataGridView1.Columns[0].HeaderText = "Title";


اینم بگم ، که کار نشد نداره !

boysilent
پنج شنبه 18 خرداد 1391, 21:35 عصر
ممنون اگه بخوایم یک ستون کامل نشون داده نشه چی دادا؟

ahmadreza517
پنج شنبه 18 خرداد 1391, 21:38 عصر
کامل یعنی چی رفیق ؟

boysilent
پنج شنبه 18 خرداد 1391, 21:42 عصر
مثلا 4 تا فیلد id,name,buy,date داریم میخوایم id نشون داده نشه؟؟؟؟

ahmadreza517
پنج شنبه 18 خرداد 1391, 21:47 عصر
این استفاده کن


dataGridView1.Columns[0].Visible = false;