PDA

View Full Version : سوال: اضافه کردن جستجو...



Beginner67
جمعه 03 خرداد 1392, 10:38 صبح
سلام.این یه قسمتی از یک پروژه است،متوجه منظورش نمیشم.کسی میتونه توضیح بده چیکار کنم؟
ممنون.

افزودن باکس مربوط به جستجو. ضمنا مورد زیر باید به آن اضافه شود :
به محض شروع به تایپ در این باکس یک قسمت از صفحه (مثلا یک تگ div) که تا به حال مخفی بوده ظاهر شود و بتوان در آن سوئیچ هایی را برای جستجو انتخاب کرد این سوئیچ ها عبارتند از : Find All و Case Sensitive به صورت چک باکس و گزینه جهت جستجو شامل دو گزینه بالا به پائین و پائین به بالا که هر یک ، یک دکمه رادیویی هستند . واضح است که هیچ گونه عملیات سروری در این تمرین مد نظر نیست بلکه انتظار داریم این جستجو مانند کلید های Ctrl + F در مرورگر عمل کرده و یافته ها را HighLight کند .

forestasphalt
جمعه 03 خرداد 1392, 15:37 عصر
ممکنه چند تا چیز مدنظرش باشه
1)اینکه با شروع به تایپ حرفی یه لیستی ظاهر بشه (به صورت autocomplete ظاهر بشه یا اینکه مثلا در قسمت دیگه ای یه دایو باز بشه که در هر دو حالت باید find all ,case sensetive و موارد دیگه ای رو که خواسته نشون بده)
برای autocomplete در سایت dotnettips جستجو کن یا توی اینترنت کلی مثال وجود داره
برای highlight کردن هم میتونی از کتابخانه جاوااسکریپتی زیر استفاده کنی
http://www.jquery4u.com/plugins/10-jquery-text-highlighter-plugins/
منظورش این بوده که در کلاینت عمل جستجو رو انجام بدی

Beginner67
دوشنبه 06 خرداد 1392, 01:09 صبح
لطفا بیشتر توضیح بدید.
1.چجوری با محظ نوشتن اون div پنهان ،نشون داده بشه؟دایو رو گذاشتم تو یه panel و visible پنل رو false کردم.حالا چجوری بهش بگم به مح نوشتن true شو؟
2.اینکه چک باکس final و case رو میگه بذارم تو دایو،چجوری با تیک دار شدن final همه موارد رو پیدا کنه؟
3.برای اون دکمه رادیویی مثلا روی پایین با بالا رو انتخاب کردم ،چه کدی بنویسم که جستجو رو از پایین به بالا انجام بده؟
ممنون.

forestasphalt
دوشنبه 06 خرداد 1392, 09:16 صبح
جواب سوال 1: موقعی که داخل متن تک باکس چیزی نوشته میشه تابع جاوااسکریپتی فراخوانی میشه (به جای تک باکس سمت سرور از تک باکس اچ تی ام ال استفاده کنی بهتره)



<script>
function toggle() {
var p1 = document.getElementById("Panel1");
if (myTextBox.Text!= "") {
p1.style.display = "block";
}
else {
p1.style.display = "none";
}
}
</script>
<asp:TextBox runat="server" ID="myTextBox" onkeyup="javascript:toggle();" >

</asp:TextBox>



جواب سوال 2: باید مقدار چک باکس با آجاکس بفرستی سمت سرور
1)برای اینکار باید اول کتابخانه جی کوئری رو به صفحه اضافی کنی(<script src="js/jquery.js"></script> کتابخونه رو از سایت http://jquery.com/download/ دانلود کن بذار تو پوشه js)
2)باید یک وب سرویس اضافه کنی(روی add new item کلیک کن بعد سرویس رو انتخاب کن پسوندش asmx )
بعد 2 تا چک باکس داخل دایو قرار بده
<input type="checkbox" onchange="SelectDeSelect(finall)" id='finall' />
<input type="checkbox" onchange="SelectDeSelect(Case)" id='Case' />
با این کد با توجه به انتخاب شدن یا نشدن چک باکس ها اطلاعات به سرور بوسیله آجاکس فرستاده میشه
بعد این تابع رو کپی پیست کن


function SelectDeSelect(Title) {
var Selected_Title = Title;
paras = '{Selected_Title:"' + Selected_Title + '" }';
if (Selected_Title != "") {
$.ajax(
{
type: "POST",
data: paras,
contentType: "application/json; charset=utf-8",
dataType: 'json',
url: "WebService1.asmx/Checked_Title",

success: function (json) {
//show data here
alert(json)

},
complete: function () {
},

error: function (xhr) {
alert(xhr.responseText)
}
});
}


}

بعدا در مورد success که چجوری باید اطلاعات توش بنویسی میگم
داخل وب سرویسی که اضافه کردی
این رو از حالت توضیح در بیار



[System.Web.Script.Services.ScriptService]

[WebMethod]
public void Checked_Title(string Selected_Title)
{
DataClassesDataContext db=new DataClassesDataContext();

//خواندن اطلاعات از دیتابیس


}



توی قسمت خواندن از دیتابیس
باید بررسی کنی که Selected_Title چه مقداری داره اگه مقدارش برابر با finall بود
باید کل اطلاعات از دیتابیس بخونی
اگه از linq استفاده میکنی باید
var q=db.tablename.tolist() استفاده کنی
یا اگر برابر با case بود یه شرط دیگه (چون خبری از اسم جدول هات یا اسم فیلدهات ندارم نمیتونم بیشتر توضیح بدم)
جواب سوال 3
برای مرتب سازی نزولی یا صعودی هم میتونی از دستور
orderBy یا OrderBy Descanding استفاده کن(همین کلمات رو توی سایت جستجو کن میتونی مشکلتو حل کنی)
تا همین مراحل برو جایی خطا داد بگو راهنماییت کنم

Beginner67
دوشنبه 06 خرداد 1392, 10:51 صبح
سلام.خیلی لطف کردید و کامل گفتید،از وقتی که گذاشتید ممنونم.
تشکر و سپااااس فراوان.:)