PDA

View Full Version : مشکل در جستجو از بانک با querystring



sg.programmer
یک شنبه 25 دی 1390, 23:15 عصر
سلام
من دریک صفحه که محصولات وجود دارد یک تکست باکس دارم که با فشردن یک دکمه از طریق querystring به صفحه جستجو هدایت میشه
که با تنظیمات روی گرید از طریق این کوئری استرینگ سرچ بدرستی انجام میشه
و
ولی اگر بصورت مستقیم وارد این صفحه جستجو بشم یعنی بدون querystring صفحه هیچ چیز نمایش نمیده
و دکمه ای که هم برایش کد نوشتم جستجوی انجام نمیده
دوستان مشکل از کجاست -

صفحه ارسال - 1


protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("Search_Portfolio.aspx?ID=" + TextBox1.Text);
}


صفحه دریافت - 2


protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
try
{
TextBox1.Text = Request.QueryString["ID"].ToString();
}
catch (Exception)
{
return;
}
}
}

protected void Button1_Click(object sender, EventArgs e)
{
SqlDataSource1.SelectCommand = "SELECT Pro_ID, Grp_ID, Pro_Title, Pro_Date, Pro_PicName, Pro_FileName FROM tbl_Product WHERE (Pro_Title LIKE '%" + TextBox1.Text + "%')";
GridView1.DataBind();
}


<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:DB_ConnectionString %>"
SelectCommand="SELECT Pro_ID, Grp_ID, Pro_Title, Pro_Date, Pro_PicName, Pro_FileName FROM tbl_Product WHERE (Pro_Title LIKE '%' + @Pro_Title + '%')">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="" Name="Pro_Title" QueryStringField="ID" />
</SelectParameters>
</asp:SqlDataSource>


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

تشکر

hamid_shrk
دوشنبه 26 دی 1390, 08:30 صبح
این شرط رو بزار تو پیج لودت :

If (Request.QueryString["ID"]!=null)
TextBox1.Text = Request.QueryString["ID"].ToString();

sg.programmer
دوشنبه 26 دی 1390, 10:29 صبح
تشکر
ولی نشد - اگه از طریق Querystring وارد این صفحه نشه جستجوی صورت نمیگیره
* آیا این شیوه درسته یا باید از طریق دیگه انجام بدم
* همچنین اگه از طریق Querystring وارد بشم (search.aspx?ID=دی) کراکتر "ی" را مورد جستجو قرار میده ولی اگه توصفحه search بخوام سرچی کنم و داخل جستجوم حرف "ی" باشه نتیجه ای در بر نداره - احتمالا برای کراکتر های "ی و ک .." باشه ولی چرا از طریق ((search.aspx?ID=دی) جستجو صورت میگیره؟

hamid_shrk
دوشنبه 26 دی 1390, 10:38 صبح
راهتون خیلی جالب نیست ولی واسه حل مشکلتون تو دکمه سرچ این رو بنویسید :

Response.Redirect("Search_Portfolio.aspx?ID=" + TextBox1.Text);

یعنی اینکه همون صفحه رو برای سرچتون با کوئری استرینگ فراخوانی کنید.

fakhravari
دوشنبه 26 دی 1390, 10:53 صبح
اگر از SqlDataSource1 استفاده میکنید میتوانید از where استفاده کنید که مقدار query string بگیره.

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString1 %>"
onselecting="SqlDataSource1_Selecting"
ProviderName="<%$ ConnectionStrings:DatabaseConnectionString1.Provid erName %>"
SelectCommand="SELECT [id], [n] FROM [Table1] WHERE ([id] = @id)">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="0" Name="id" QueryStringField="id"
Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>

sg.programmer
دوشنبه 26 دی 1390, 11:22 صبح
راهتون خیلی جالب نیست ولی واسه حل مشکلتون تو دکمه سرچ این رو بنویسید :

Response.Redirect("Search_Portfolio.aspx?ID=" + TextBox1.Text);

یعنی اینکه همون صفحه رو برای سرچتون با کوئری استرینگ فراخوانی کنید.

تشکر آقای hamid_shrk اینو میدونم ولی این راه راه بهینه ای نیست - آیا شیوه بهتری هست؟
------------------
تشکر آقای fakhravari منم دارم از همین شیوه استفاده میکنم


اگر از SqlDataSource1 استفاده میکنید میتوانید از where استفاده کنید که مقدار query string بگیره

hamid_shrk
دوشنبه 26 دی 1390, 11:32 صبح
بجای اینکه تو خود گریدتون بیاید کوئری رو بخونید تو لود صفحتون و توی
!ispostback اینو بنویسید :

SqlDataSource1.SelectParameters["فیلد ورودی"].DefaultValue = "مقدار برای جستجو";