PDA

View Full Version : سوال: نحوه ی جستجو از بانک و نمایش اطلاعات در فرم



h05531n
سه شنبه 03 اردیبهشت 1392, 15:50 عصر
بسم الله الرحمن الرحیم
سلام

پروژه ام یک پرتال خبری ، که یه قسمت برای جستجو در خبرها داره.
می خوام با جستجو در بانک و پیدا کردن مقدار مورد ، اطلاعات پیدا شده رو در فرم (و یا DataList) نمایش بده.

این کد رو هم نصفه نیمه نوشتم ، نمی دونم درسته یا نه!!!

SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\PortalNews.mdf;Integrated Security=True;User Instance=True");
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;

cmd.CommandText = "SELECT FROM Tbl_News WHERE Description Like'%txtDescription.Text%'";
cmd.Parameters.Add("@Description", SqlDbType.NVarChar, 50).Value = txtDescription.Text;

تشکر

phonixone2
سه شنبه 03 اردیبهشت 1392, 19:46 عصر
دستور select شما اشتباهه
بهتره اینجوری بنویسی
ابتدا کانککشنتو تو webconfig پروژت قرار بده
<appSettings>

<add key="dbpath" value="Server=localhost;Database=test;User ID=sa;Password=1234;" />
</appSettings>
بعد این کدرو تو قسمت پابلیک صفحه مورد نظر بنویس:
SqlConnection cnn = new SqlConnection(ConfigurationManager.AppSettings["dbpath"]);

ودر رویداد کلیک جستجو:
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandText = "select * from Foods_tbl where fd_name like @fd_name or fd_id like @fd_id ";
cmd.Parameters.AddWithValue("@fd_name","%"+txtsearch.Text+"%");
cmd.Parameters.AddWithValue("@fd_id","%"+txtsearch.Text+"%");

cnn.Open();
DataList1.DataSource = cmd.ExecuteReader();
DataList1.DataBind();
cnn.Close();

phonixone2
سه شنبه 03 اردیبهشت 1392, 19:52 عصر
در ضمن در قسمتی که میخوای نتیجه نمایش داده بشه یه datalist قرار بده و تو قسمت Edit template field به ازای فیلدهایی ک میخوای نمایش بدی لیبل اضافه کن ودر قسمت Edit databinding هر لیبل فیلدی رو ک میخوای نمایش بدی اینجوری بنویس:
eval("اسم فیلد در دیتابیس");

h05531n
چهارشنبه 04 اردیبهشت 1392, 12:50 عصر
سلام دوست عزیز ، ممنون که جواب دادید

این قسمت چیکار میکنه؟


ابتدا کانککشنتو تو webconfig پروژت قرار بده
<appSettings>

<add key="dbpath" value="Server=localhost;Database=test;User ID=sa;Password=1234;" />
</appSettings>

وقتی پروژه رو اجرا میکنم ، هنوز متن مورد نظر رو جستجو نکردم ، تمامی خبرها رو در قسمت datalist نمایش میده!!!

و زمانی که روی دکمه جستجو کلیک میکنم پیام خطای زیر نشون داده میشه (تصویر فایل ضمیمه)

SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\PortalNews.mdf;Integrated Security=True;User Instance=True");
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "select * from Tbl_News where Description like @Description";
cmd.Parameters.AddWithValue("@Description ", "%" + txtDescription + "%");

con.Open();
DataList1.DataSource = cmd.ExecuteReader();
DataList1.DataBind();
con.Close();

meisam3322
چهارشنبه 04 اردیبهشت 1392, 13:33 عصر
دستور Datalist.DataBind رو حذف کن ، ارور میگه شما دو بار دیتا لیست رو bind کردین ، چون یه بار در Desgin و دیگری در Code

fakhravari
چهارشنبه 04 اردیبهشت 1392, 20:06 عصر
به Datalist دیتاسورت وصل اونو از تو html باید حذف کنی.

h05531n
پنج شنبه 05 اردیبهشت 1392, 16:24 عصر
سلام

تشکر که نظر دادین


دستور Datalist.DataBind رو حذف کن ، ارور میگه شما دو بار دیتا لیست رو bind کردین ، چون یه بار در Desgin و دیگری در Code

این کار رو کردم ، نشد!


به Datalist دیتاسورت وصل اونو از تو html باید حذف کنی.

وقتی پاک می کنم اررو میده و باز نمیشه!(فایل ضمیمه)

این کد فرم:

<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
متن:
<asp:Label ID="DescriptionLabel" runat="server" Text='<%# Eval("Description") %>' />
</ItemTemplate>
</asp:DataList>

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [Description] FROM [Tbl_News]"></asp:SqlDataSource>

کد دکمه جستجو:

protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\PortalNews.mdf;Integrated Security=True;User Instance=True");
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "select * from Tbl_News where Description like @Description";
cmd.Parameters.AddWithValue("@Description ", "%" + txtDescription + "%");

con.Open();
DataList1.DataSource = cmd.ExecuteReader();
DataList1.DataBind();
con.Close();
}

h05531n
یک شنبه 08 اردیبهشت 1392, 20:30 عصر
لطفا راهنمایی کنید :متفکر:

h05531n
سه شنبه 10 اردیبهشت 1392, 19:21 عصر
دوباره سلام

مشکل جستجو حل شد ، فقط یه مشکل دیگه پیش اومد!
مشکل اینه که متن فارسی رو جستجو نمی کنه!!!

لطفا راهنمایی کنید.

تشکر
__________________________________________________ ______
کد قسمت دکمه:

protected void Button2_Click(object sender, EventArgs e)
{
string str, q;
str = txtDescription.Text;
q = "select * from Tbl_News where Description like'%"+str+"%'";
SqlConnection conn = new SqlConnection(SqlDataSource1.ConnectionString);
SqlCommand cmd = new SqlCommand(q,conn);
cmd.CommandType = CommandType.Text;
SqlDataReader rdr;
using (conn)
{
conn.Open();
rdr = cmd.ExecuteReader();
GridView1.DataSource = rdr;
GridView1.DataBind();
conn.Close();
}


کد قسمت صفحه:

<asp:GridView ID="GridView1" runat="server" CellPadding="4" EnableModelValidation="True" ForeColor="#333333" GridLines="None"> </asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [Description] FROM [Tbl_News]"></asp:SqlDataSource>

fakhravari
جمعه 13 اردیبهشت 1392, 14:58 عصر
like N'%"+str+"%'"