PDA

View Full Version : سوال: نمایش اطلاعات در دیتا گرید



mohsen.nsb44
دوشنبه 05 خرداد 1393, 10:44 صبح
سلام من با استورپروسیجر دستور سلکت گرفتم و میخوام داخل دیتا گرید نشون بدم
تو asp.net که کار میکردم کدی به شکل gridview1.databound داشتیم که مشکلو حل میکرد تو ویندوز اپلیکیشن چه کدی باید بنویسم
از دیتاتیبل نمیخوام استفاده بشه

mohsen.nsb44
پنج شنبه 08 خرداد 1393, 09:39 صبح
خب دوستان چطور چنین کاری میکنن وقتی از استورپروسیجر استفاده میکنند
لطفا راهنمایی بکنید

اوبالیت به بو
پنج شنبه 08 خرداد 1393, 09:47 صبح
درود بر شما

همون کاری که در ASP.NET انجام می دید اینجا هم باید انجام بدید فقط متد DataBind() نخواهید داشت.

شما باید از DataSet استفاده کنید مگر بخواهید از ORM استفاده کنید.

یک DataSet باید پر کنید و DataSet رو به خاصیت DataSource کنترل DataGridView متصل کنید.

Iran58
پنج شنبه 08 خرداد 1393, 09:52 صبح
private void GetValue()
{
CameraDataContext db = new CameraDataContext();
var all =from row in db.UserJobs
select row;
dataGridView1.DataSource = all;
}

mohsen.nsb44
پنج شنبه 08 خرداد 1393, 10:16 صبح
درود بر شما

همون کاری که در ASP.NET انجام می دید اینجا هم باید انجام بدید فقط متد DataBind() نخواهید داشت.

شما باید از DataSet استفاده کنید مگر بخواهید از ORM استفاده کنید.

یک DataSet باید پر کنید و DataSet رو به خاصیت DataSource کنترل DataGridView متصل کنید.

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


Connect con = new Connect();
con.dComand("S_car_select");
con.Add("noe", cbNoe.SelectedValue.ToString());
con.Add("@tip", txtTTip.Text);
con.Add("@model", cbModel.SelectedValue.ToString());
con.ddcomand();


کد کلاسم هم اینه



class Connect
{
SqlConnection con;
SqlCommand cmd;
SqlDataAdapter da;

public void connect()
{
con = new SqlConnection();
con.ConnectionString = "Data Source=.;Initial Catalog=ArmaghanDB;Integrated Security=True;User Instance=False";
con.Open();
}

public void dComand(string sp)
{
cmd = new SqlCommand(sp,con);
cmd.CommandType = CommandType.StoredProcedure;
}
public void Add(string p,string val)
{
cmd.Parameters.AddWithValue(p, val);
}
public void ddcomand()
{
cmd.ExecuteNonQuery();
con.Close();
}

}



حالا چی باید به کدم اضافه بکنم؟

اوبالیت به بو
پنج شنبه 08 خرداد 1393, 10:31 صبح
این کد شما کار Select انجام نمی ده.

متد ddcomand رو از حالت void به DataSet تغییر بدید، یعنی:


public DataSet ddcomand()
بعد داخل این متد کدهای ExecuteNonQuery رو پاک کنید چون می خواید عملیات واکشی رو انجام بدید نه یک کار تراکنشی. بدنه متد به این صورت خواهد بود:


da = new SqlDataAdapter();
DataSet ds=new DataSet();
da.Fill(ds);
con.Close();

return ds;



حالا در دکمه بنویسید:


DataGridView.DataSource = con.ddcomand();

این کد ها تست نشده و بر اساس چیزی که الان از کد شما دیدم نوشتم.

دوست من با ASP.NET هیچ فرقی نداره همون کاری که اونجا می کردی اینجا هم انجام بده.

mohsen.nsb44
پنج شنبه 08 خرداد 1393, 10:37 صبح
دستور سلکت من داخل استور پروسیجر من هستش
من دقیقا همون کدی که گذاشتمو داخل asp نوشتم منتها تو asp در کنترل گرید ویو میشه مسقیم به sp وصل کردو پارامتر هارو به کنترل مورد نظر وصل کرد و نیازی نیست تو دکمه کدی نوشته بشه فقط بایند کنی جواب میگیری که متاسفانه تو ویندوز نمیشه چنین کاری کرد
یا اگه بشه من نمیدونم چطوری میشه

اوبالیت به بو
پنج شنبه 08 خرداد 1393, 11:16 صبح
کد دکمه شما باید اینطور باشه:

Connect con = new Connect(); con.dComand("S_car_select");
con.Add("noe", cbNoe.SelectedValue.ToString());
con.Add("@tip", txtTTip.Text);
con.Add("@model", cbModel.SelectedValue.ToString());

DataSet ds= new DataSet();
ds=con.ddcomand();

DataGridView1.DataSource=ds;
DataGridView1.DataMemebr = ds.Table[0].TableName;



و اون کلاس شما کافیه متد ddcomand رو تغییر بدید:

da = new SqlDataAdapter();DataSet ds=new DataSet();
da.SelectCommand = Cmd;
da.Fill(ds);
con.Close();

return ds;

من در پست قبلی این دستور رو فراموش کرده بودم بنویسم:

da.SelectCommand = Cmd;