PDA

View Full Version : سوال: جستجو در يك يا چند جدول بانك اطلاعاتي



ahmadhasani
شنبه 11 شهریور 1391, 17:21 عصر
سلام. من هرچي گشتم ، به نتيجه‌اي نرسيدم.
من دوتا جدول دارم به نام‌هاي article و news كه اين جداول ، هركدوم چندتا ستون دارن.
حالا مي‌خوام يه صفحه به نام جستجو داشته باشم متشكل از يك تكست‌باكس و يك باتم كه با وارد كردن يك كلمه ، همه فيلدهاي اين دوتا جدول جستجو بشه و نتيجه هم توي يه ريپيتر ، گريدويو ، ليست ويو يا هرچيز ديگه‌اي نمايش داده بشه.
حالا اشكالي هم نداره اگه فقط يه جدول هم بگرده.
فقط خيلي لازم دارم اساسي!

meisam12
شنبه 11 شهریور 1391, 21:07 عصر
سلام
می تونی از سورس کد زیر استفاده کنی

public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string constring = ConfigurationManager.ConnectionStrings["AccreString"].ConnectionString;
SqlConnection conn = new SqlConnection(constring);
DataTable dt = new DataTable("emed_province");

using (conn)
{
conn.Open();
SqlCommand comm = new SqlCommand("SELECT * FROM emed_province ORDER BY PROVINCE_NAME ASC", conn);
SqlDataAdapter adptr = new SqlDataAdapter(comm);
adptr.Fill(dt);
}

ddlProvince.DataSource = dt;
ddlProvince.DataTextField = "PROVINCE_NAME";
ddlProvince.DataValueField = "PROVINCE_CODE";
ddlProvince.DataBind();
}
}

protected void ddlProvince_SelectedIndexChanged(object sender, EventArgs e)
{
string constring = ConfigurationManager.ConnectionStrings["AccreString"].ConnectionString;
SqlConnection conn = new SqlConnection(constring);
DataTable dt = new DataTable("emed_province");

using (conn)
{
conn.Open();
SqlCommand comm = new SqlCommand("SELECT * FROM emed_city WHERE PROVINCE_CODE =@pcode", conn);
comm.Parameters.AddWithValue("@pcode", ddlProvince.SelectedValue);
SqlDataAdapter adptr = new SqlDataAdapter(comm);
adptr.Fill(dt);

SqlParameter param = new SqlParameter();
param.ParameterName = "@pcode";
param.Value = ddlProvince;

comm.Parameters.Add(param);
}

ddlCity.DataSource = dt;
ddlCity.DataTextField = "CITY_NAME";
ddlCity.DataValueField = "CITY_CODE";
ddlCity.DataBind();
}

private void BindGridView(string field)
{


DataTable dt = new DataTable();
string constring = ConfigurationManager.ConnectionStrings["AccreString"].ConnectionString;
SqlConnection conn = new SqlConnection(constring);

try
{
conn.Open();
SqlCommand comm = new SqlCommand("SELECT * FROM emed_accredited_providers WHERE DOCTOR_CODE =@pcode", conn);
comm.Parameters.AddWithValue("@pcode", ddlProvince.SelectedValue);
SqlDataAdapter adptr = new SqlDataAdapter(comm);
adptr.Fill(dt);

SqlParameter param = new SqlParameter();
param.ParameterName = "@pcode";
param.Value = ddlProvince;

comm.Parameters.Add(param);

if (dt.Rows.Count > 0)
{
GridView1.DataSource = dt;
GridView1.DataBind();
}
else
{
}
// NO RECORDS FOUND
}
catch (System.Data.SqlClient.SqlException ex)
{
string msg = "Fetch Error:";

msg += ex.Message;
throw new Exception(msg);
}
finally
{
conn.Close();
}
}


protected void btnSearch_Click(object sender, EventArgs e)
{
BindGridView(txtName.Text.Trim());
}
}

ahmadhasani
یک شنبه 12 شهریور 1391, 16:29 عصر
ممنون. فقط ميشه يكم توضيح بدي؟

download69
دوشنبه 13 شهریور 1391, 00:02 صبح
توی صفحه سرچت میتونی از یک دیتا لیست یا یک گرید استفاده کنی که SqlDataSource اش خصوصیت Select اش رو مثلا به روش زیر تنظیم کنی :


Select * from table where subject LIKE '%' + @p + '%' order by [id] desc

شرح دستور Select :گیج: :

این دستور فیلد Subject جدول رو میگرده و فیلدی که یک شباهتی با پارامتر p داشته باشه رو نشون میده

این قسمت order by [id] desc هم برای Sort کردن گریدمون بر اساس آخرین مطلب به اولین مطالب است