PDA

View Full Version : نحوه نوشتن search برا اساس دوفیلد



salmah
دوشنبه 23 تیر 1393, 11:59 صبح
من قبلا برای سرچ معمولا نیاز داشتم که داخل گریدنمایش داده بشه .خب کار ساده بود.....
الان میخوام با توجه به دوفیلد جدولم سرچ انجام بشه و بعد توسط dropdown نمایش داده بشه که قسمت دوم را بلدم ولی نمی دونم دستور search چی بنویسم

جدولمtkod:nam, rid,kid, nid هست

و می خوام بر اساس rid, kid سرچ بشه و مقدار nid را برگردونه
مقدار kid,rid توسط textbox گرفته می شود

rafiee.mostafa64
دوشنبه 23 تیر 1393, 15:19 عصر
select nid from tkod where rid=@rid and kid=@kid
@kid و @rid پارامتر ورودی هستن برای سرچ مورد نظر شما
اگه توضیح بیشتر خواستید بفرمایید تا بگم...

کوئری مورد نظر شما این میشه ولی شما اول یه مقدار sql کار کن
یاد گیری مقدماتی sql کار سختی نیست و این کوئری ها جزء مسائل اولیه sql هستش

salmah
دوشنبه 23 تیر 1393, 17:44 عصر
ممنون از شما خودم همین را نوشتم ولی مشکل من استفاده از مقداری هست که قراره nidبرگردونه می خوام بایندش کنم به یهdrop down

rafiee.mostafa64
سه شنبه 24 تیر 1393, 03:47 صبح
خوب کدی که استفاده می کنید رو بگید تا بگم کجاش رو باید عوض کنی

salmah
سه شنبه 24 تیر 1393, 22:03 عصر
SqlConnection cnc2=new SqlConnection();

cnc2.ConnectionString = ConfigurationManager.ConnectionStrings["shabtConnectionString"].ToString();
cnc2.Open();
SqlCommand cmd=new SqlCommand("select nid from tcod where nid=TextBox1.Text and rid=dd_rid.SelectedValue ,cnc2);

DropDown_nid.SelectedValue=?????????;
DD_nid.DataBind();
cnc2.Close();
خب میخوام اگر مقدارnid وجود داشت که DropDown_nidبایند بشه و در غیر این صورت بره داخل یه صفحه دیگه وپیغام خطا را نشون بده

rafiee.mostafa64
چهارشنبه 25 تیر 1393, 01:25 صبح
اولا من فرق بین dropDown_nid با DD_nid رو توی کدت متوجه نشدم. هردوشون یکی هستن و اشتباه تایپی بوده؟ یا اینکه دو تا dropdown جدا از هم داری
من حالت اول رو در نظر میگیرم

if (DropDownList1.Items.Count > 0)
{
DropDownList1.Items.Clear();
}
string strcomm = "select nid from tcod where nid=TextBox1.Text and rid=dd_rid.SelectedValue'";
SqlConnection con = new SqlConnection(staticitem.contection);
SqlCommand comm = new SqlCommand(strcomm, con);
con.Open();
SqlDataReader read = comm.ExecuteReader();
while (read.Read())
{
DropDown_nid.Items.Add(read[0].ToString());
}
if (DropDownList1.Items.Count > 0)
{
Response.Redirect("صفحه مورد نظرت");
}
con.Close();
con.Close();

البته بهتره با پارامتر مقادیر رو به کوئریت ارسال کنی ولی خوب من همون چیزی که خودت نوشتی رو تکمیل کردم . البته راه های دیگه هم هست برای بایند کردن اطلاعات ولی خوب این روش رو یاد بگیری خوبه توی خیلی از جاهای دیگه به کار میاد

salmah
چهارشنبه 25 تیر 1393, 12:21 عصر
]
البته بهتره با پارامتر مقادیر رو به کوئریت ارسال کنی ولی خوب من همون چیزی که خودت نوشتی رو تکمیل کردم . البته راه های دیگه هم هست برای بایند کردن اطلاعات ولی خوب این روش رو یاد بگیری خوبه توی خیلی از جاهای دیگه به کار میاد

یعنی اگر query string باشه بهتره؟
ویه سوال منظور از staticitem چیه

rafiee.mostafa64
چهارشنبه 25 تیر 1393, 14:22 عصر
اولا در مورد staticitem مربوط به پروژه من میشوده و من فراموش کردم که اون رو تغییر بدم . یه کلاسه که توی پروژه من تعریف شده پس نیاز نیست شما بهش توجه کنی و شما همون کانکشن خودت رو توی پروژت تعریف کن.
منظور از ارسال پارامتر هم اینه که مقادیر رو به صورت مستقیم توی کوئریت ننویسی چون خطا توی اون ممکن زیاد باشه و هکر های عزیز هم راحت تر میتونن باهاش کار بکنن و همچنین عیب یابی اون سختره. و با پارامتر مثل مثال زیر ارسال کنی

SqlConnection con = new SqlConnection(strcon);
string strcomm = "select nid from tcod where nid=@nid and rid=@id'";
SqlCommand comm = new SqlCommand(strcomm, con);
comm.Parameters.AddWithValue("@nid", "TextBox1.Text");
comm.Parameters.AddWithValue("@rid", "dd_rid.SelectedValue");

بقیه ماجرا رو هم که استادی

salmah
چهارشنبه 25 تیر 1393, 14:45 عصر
من به این صورت نوشتم . ولی while (read.Read()) ازاین خط ارور میگیره

while (read.Read())
if (dd_rid.Items.Count > 0)
{
dd_rid.Items.Clear();
}
SqlConnection con = new SqlConnection();
string strcomm = "select nid from tcod where kod=@kod and rid=@rid";
SqlCommand comm = new SqlCommand(strcomm, con);
comm.Parameters.AddWithValue("@kod", "TextBox1.Text");
comm.Parameters.AddWithValue("@rid", "dd_rid.SelectedValue");
con.ConnectionString = ConfigurationManager.ConnectionStrings["shbtConnectionString"].ToString();

con.Open();
SqlDataReader read = comm.ExecuteReader();
while (read.Read())
{
DD_nid.Items.Add(read[0].ToString());
}
if (DD_nid.Items.Count > 0)
{
Response.Redirect("pm.aspx");
}
con.Close();

121170

rafiee.mostafa64
پنج شنبه 26 تیر 1393, 21:25 عصر
نباید TextBox1.Text رو داخل کوتیشن بنویسی چون با این کار خود رشته TextBox1.Text رو به اون ارسال کردی نه مقدار داخلش رو. کد رو به صورت زیر تغییر بده

comm.Parameters.AddWithValue("@kod", TextBox1.Text);

comm.Parameters.AddWithValue("@rid", dd_rid.SelectedValue);

salmah
پنج شنبه 26 تیر 1393, 21:34 عصر
درستش کردم ولی درهر صورتResponse.Redirect("pm.aspx"); میشه

rafiee.mostafa64
پنج شنبه 26 تیر 1393, 21:41 عصر
درستش کردم ولی درهر صورتResponse.Redirect("pm.aspx"); میشه

متوجه منظورت نشدم؟؟

salmah
پنج شنبه 26 تیر 1393, 21:49 عصر
منظورم اینه که اگر nid جواب داشته باشه که DD_nid بایدمقدار بگیره
واگر مقدار DD_nid وجود نداشته باشه باید وارد صفحه pm بشه ولی در هر صورت وارد صفحهpm میشه

rafiee.mostafa64
پنج شنبه 26 تیر 1393, 22:04 عصر
احتمالا جواب نداره که این اتفاق میوفته ولی خوب واسه اطمینان بیشتر این کار رو بکنید

bool t = false;
while (read.Read())
{
DD_nid.Items.Add(read[0].ToString());
t=true;

}
if (t==false)

{
Response.Redirect("pm.aspx");
}

sadegh.te
پنج شنبه 26 تیر 1393, 23:41 عصر
سلام از این تابع استفاده کن میتونی بر اساس هر چند تا فیلد که خواستی جستجو کنی


string sql;
protected void Page_Load(object sender, EventArgs e)
{
sql = "select * from ferinds";
ShowAllData(sql);
sql = "select * from ferinds where profile like N'" + Label2.Text + "%' and profile like N'" + Label2.Text + "%'";
ShowAllData(sql);
}
private void ShowAllData(string str)
{
SqlDataSource myDs;
String db = @"Data Source=.;Initial Catalog=AtlasIran;Integrated Security=True";
myDs = new SqlDataSource();

myDs.ConnectionString = db;
myDs.SelectCommandType = SqlDataSourceCommandType.Text;
myDs.SelectCommand = str;
myDs.DataBind();
this.GridView1.DataSource = myDs;
this.GridView1.DataBind();
}


کل مقادیر رو تو گرید ویو بهت نشون میده بعد براساس هر کدوم که خواستی میتونی search کنی

maryamzz
دوشنبه 30 تیر 1393, 13:50 عصر
سلام از این تابع استفاده کن میتونی بر اساس هر چند تا فیلد که خواستی جستجو کنی


string sql;
protected void Page_Load(object sender, EventArgs e)
{
sql = "select * from ferinds";
ShowAllData(sql);
sql = "select * from ferinds where profile like N'" + Label2.Text + "%' and profile like N'" + Label2.Text + "%'";
ShowAllData(sql);
}
private void ShowAllData(string str)
{
SqlDataSource myDs;
String db = @"Data Source=.;Initial Catalog=AtlasIran;Integrated Security=True";
myDs = new SqlDataSource();

myDs.ConnectionString = db;
myDs.SelectCommandType = SqlDataSourceCommandType.Text;
myDs.SelectCommand = str;
myDs.DataBind();
this.GridView1.DataSource = myDs;
this.GridView1.DataBind();
}


کل مقادیر رو تو گرید ویو بهت نشون میده بعد براساس هر کدوم که خواستی میتونی search کنی
سلام
حالا چه جوری میشه نتیجه سرچ لینک کرد به صفحه خاص خودش؟در صورتی که نتایج از جداول مختلف دیتابیس گرفته شده باشه و هر جدول توی یه صفحه از وب سایته