PDA

View Full Version : سوال: چطوری یه تابع برای Search بنویسم؟



masoud.a
یک شنبه 07 خرداد 1391, 16:01 عصر
قبلا یه کلاس نوشتم که کارای Insert و Edit و Select رو انجام میده.مثلا برای Login از تابع Selectش استفاده میکنم.
میشه راهنمائیم کنید که چطوری یه تابع برای Search بنویسم؟

mohsen.nsb44
یک شنبه 07 خرداد 1391, 16:09 عصر
تابع جستجو هم همون تابع select هستش فقط یک شرط گزاشته میشه
مثلا شما فرض کنید یک textBox دارین میخواین بر اساس متنی که وارد textbox شده نتیجه جستجو نشان داده بشه
که کافیه کد زیر رو بنویسید


select * from news where onvan =textbox1.tex

hossein_va
یک شنبه 07 خرداد 1391, 17:13 عصر
البته بهتره از رویه های ذخیره شده استفاده کنی هم امنیتش بیشتره هم سرعتش

fakhravari
یک شنبه 07 خرداد 1391, 22:56 عصر
http://barnamenevis.org/showthread.php?343347-%D8%AD%D8%B0%D9%81-%D9%86%D8%B4%D8%AF%D9%86-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A7%D8%B2-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D9%88-%DA%AF%D8%B1%DB%8C%D8%AF%D9%88%DB%8C%D9%88

Saman Hashemi
دوشنبه 08 خرداد 1391, 08:19 صبح
به اینجا (http://samanhashemi.ir/?p=61)مراجعه کنید...!

mohsen.nsb44
دوشنبه 08 خرداد 1391, 10:02 صبح
به اینجا (http://samanhashemi.ir/?p=61)مراجعه کنید...!
یه سوال من از این کدی که گفتید قبلا استفاده کردم اما متاسفانه نتونستم جواب بگیرم
یعنی در کنترل گریدویو در قسمت testQuery جواب صحیح داد اما کدی که در دکمه جستجو نوشتم جواب نداد کد رو میزارم اگه ممکنه بگین مشکلش از چیه



SqlConnection con = new SqlConnection();
con.ConnectionString = System.Configuration.ConfigurationManager.Connecti onStrings["connectionstring"].ConnectionString;
SqlCommand cmd = new SqlCommand("search", con);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.AddWithValue("@Name", this.txtName.Text);
cmd.Parameters.AddWithValue("@gender", null);
cmd.Parameters.AddWithValue("@ostan", this.txtOstan.Text);
cmd.Parameters.AddWithValue("@shahr", txtShahr.Text);
cmd.Parameters.AddWithValue("@tahsilat",null);
con.Open();
cmd.ExecuteNonQuery();

DataList1.DataBind();
con.Close();

fakhravari
دوشنبه 08 خرداد 1391, 10:38 صبح
شما اول باید خروجی درون یک دیتاسورس یا دیتاتیبل بریزید و بعد بدین به DataList1 و بعد باید بایند کنید.

mohsen.nsb44
دوشنبه 08 خرداد 1391, 11:24 صبح
شما اول باید خروجی درون یک دیتاسورس یا دیتاتیبل بریزید و بعد بدین به DataList1 و بعد باید بایند کنید.
میشه یه نمونه کد بزارین تا بهتر متوجه منظورتون بشم؟

fakhravari
دوشنبه 08 خرداد 1391, 13:11 عصر
public DataTable One_Req_Bk(string UserName)
{
SqlConnection con = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = SqlOne;
cmd.Parameters.Add("@UserName", SqlDbType.NVarChar).Value = UserName;
con.Open();

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();

da.Fill(dt);
con.Close();

if (dt.Rows.Count > 0)
{
this.UserName = dt.Rows[0]["UserName"].ToString();
this.Comennt = dt.Rows[0]["Comennt"].ToString();
this.Date =Convert.ToDateTime(dt.Rows[0]["Date"]);
this.Replay_Comennt = dt.Rows[0]["Replay_Comennt"].ToString();
this.Replay_Date = Convert.ToDateTime(dt.Rows[0]["Replay_Date"]);
this.Vziat = dt.Rows[0]["Vziat"].ToString();
this.ID = Int32.Parse(dt.Rows[0]["ID"].ToString());

}
else
{
lasteror = "موردی یافت نشد";

}
return dt;
}
DataList1.datasours=One_Req_Bk(txt);
DataList1.DataBind();

mohsen.nsb44
دوشنبه 08 خرداد 1391, 13:25 عصر
دوست عزیز اقای فخر اوری ممنون از پاسخگوییتون و گزاشتن مثالی برای درک بهتر
میشه بگین کد من چطوری باید تغغیر داده بشه تا جواب صحیح بدست بیاد؟
کد پست شماره 6
اینم بگم که کنترل دیتالیست من به sqldatasource وصله و کنترل sqldatasource من به پروسیجر من

fakhravari
دوشنبه 08 خرداد 1391, 13:54 عصر
نیازی به اتصال به sqldatasource نیست .
یه تابع برای پر کردن جدول
public static DataTable ExecutStoredProcedure(string StoredProcedure)
{
DataTable MyDataTable = new DataTable();
SqlCommand Com = new SqlCommand(StoredProcedure, ConnecttionString);
Com.CommandType = CommandType.StoredProcedure;
SqlDataAdapter DataAdapter = new SqlDataAdapter(Com);
DataAdapter.Fill(MyDataTable);
return MyDataTable;
}
public static DataTable AllPerson()
{
DataTable MyDataTable = ExecutStoredProcedure("PersonsSelectAllGrid");
return MyDataTable;
}
شما میتوانید
در تابع اول اگر where دارید فقط این را اضافه کنید به تعداد شرط ها
Cmd.Parameters.AddWithValue(@"NationalCode", NationalCode);
دیگر نیازی به دیتاسورس نیست در پیج لود گرید خالی و پر کنید
StoredProcedure = نام SP

masoud.a
دوشنبه 08 خرداد 1391, 15:45 عصر
از تابع Select استفاده کردم و دارم جواب میگیرم.الان سوالی که دارم اینه که چجوری اگه اون کتاب وجود داشت منو ببره به صفحه جزئیاتش؟(یعنی یه جور باید با صفحه ای که توش با DetailsView جزئیات کتاب نمایش داده میشه ارتباط برقرار کنه)

fakhravari
دوشنبه 08 خرداد 1391, 23:05 عصر
خوب شما باید یه صفحه درست کنید که جزئیات را نشون بده.
قبلش باید یه لینکی بزارید در گرید اصلی که با Query String کد مطلب بفرسته به صفحه ای که جزئیات رونش هست.