PDA

View Full Version : مشکل در جستجو



r_mehrizi
سه شنبه 11 تیر 1387, 13:44 عصر
من با جدول یک فرم طراحی کردم میخوام وقتی کاربر یکی از textboxها را پر کرد و کلید اینتر رازد عمل جستجو انجام شود برای این کار داخل فایل asp کد زیر را وارد کردم


Me.txt_exid.Attributes.Add("onkeydown", "javascript:search()")
یعنی اگه کاربر کلیدی را داخل textbox زد تابع search فراخوانی شود

تابع search را داخل فایل js اینگونه نوشتم و منظورم این بوده که هر وقت کلید اینتر داخل textbox فشرده شد خاصیت checked دکمه search برابر true بشه تا عمل جستجو انجام بشه




search()function


{

document.getElementById(btn_Search).checked=true


{

اما خطای زیر را میده



document.getElementById(btn_Search).is null or not an object



خواهش میکنم یک نفر جواب بده

raravaice
سه شنبه 11 تیر 1387, 14:09 عصر
اون btn_search رو بزارید توی ' یا " که درست بشه!

موفق باشید

r_mehrizi
چهارشنبه 12 تیر 1387, 09:17 صبح
داخل " یا ' گذاشتم همون خطای

document.getElementById(btn_Search).is null or not an object


را میده خواهش می کنم کمک کنید

raravaice
چهارشنبه 12 تیر 1387, 09:48 صبح
سورس کامل HTML رو بین تگ کد بزارید.

موفق باشید

r_mehrizi
چهارشنبه 12 تیر 1387, 10:19 صبح
جناب raravaice خدا خیرتان دهد از اینکه جواب میدهید
بذارید از اول برایتان توضیح دهم من با استفاده از کدهای زیر یک فرم طراحی کردم که داخل اون از تگ form استفاده نشده

<tablealign="center">
<tr>
<tdalign="left"><divclass="face">
شماره اموال واحد کامپیوتر :&nbsp;</div>
</td>
<tdalign="right"><asp:TextBoxID="txt_exid"runat="server"Font-Names="Tahoma"CssClass="face"/></td>
<tdalign="left"><divclass="face">
شماره اموال :&nbsp;</div>
</td>
<tdalign="right"><asp:TextBoxID="txt_excode"runat="server"Font-Names="Tahoma"CssClass="face"/></td>
</tr>
<tr>
<tdalign="left"><divclass="face">
شماره سریال :&nbsp;</div>
</td>
<tdalign="right"><asp:TextBoxID="txt_exserial"runat="server"Font-Names="Tahoma"CssClass="face"/></td>
<tdalign="left"><divclass="face">
نوع کالا :&nbsp;</div>
</td>
<tdalign="right"><asp:DropDownListDataTextField="Title"DataValueField="id"ID="drop_Equipment"runat="server"Font-Names="Tahoma"CssClass="face"/></td>
</tr>
<tr>
<tdcolspan="2"align="left">
<asp:ButtonID="btn_Search"runat="server"Text="جستجو"CssClass="button"Width="74px"/>&nbsp;&nbsp;&nbsp;
</td>
<tdcolspan="2"align="right">
&nbsp;&nbsp;&nbsp;
<asp:ButtonID="btn_print2"runat="server"Text="چاپ"CssClass="button"Width="74px"/>
</td>
</tr>
</table>

میخوام وقتی کاربر شماره اموال را وارد میکنه و اینتر را میزنه عملیات جستجو توسط دکمه btn_search انجام بشه
خودم راهی که به ذهنم رسید این بود که وقتی کاربر شماره اموال را وارد میکنه و اینتر را میزنه توسط همون کد جاوااسکریپت خاصیت checked دکمه btn_search برابر با true بشه اما الان جواب نمیده
دستتون درد نکنه خواهش میکنم جواب بدید چون خیلی فوریه

Behrouz_Rad
چهارشنبه 12 تیر 1387, 10:29 صبح
document.getElementById("btn_Search").click();

r_mehrizi
چهارشنبه 12 تیر 1387, 10:58 صبح
کدهای من داخل فایل aspx به این شکله



txt_exid.Attributes.Add("onkeydown", "javascript:search();")



و داخل فایل js به این شکل


function search()
{
document.getElementById("btn_Search").click();
}




ولی دوباره خطای زیر را میده



document.getElementById() is null or not an object

Behrouz_Rad
چهارشنبه 12 تیر 1387, 11:04 صبح
فایل js رو باید با تگ script به صفحه معرفی کنی.

raravaice
چهارشنبه 12 تیر 1387, 11:22 صبح
ظاهر امر نشون میده که شما به استفاده از تگ
هیچ علاقه ای ندارید! ;)

[code]
<asp:ButtonID="btn_Search"runat="server"


شما اینجا از یک کنترل سمت سرور استفاده کرده اید و احتمال 99% دارید از دات نت 2.0 به بعد برای برنامه نویسی استفاده میکنید.
دقت کنید که در دات نت 2.0 به بعد کنترل های سمت سرور بعد از Render شدن یک ID جدید میگیرن و این در حالی هست که شما داری ID اصلی این کنترل رو در جاوا اسکریپت صدا میزنی.

شما برای رفع مشکل فقط کافیه ClientID این کنترل رو به جاوا اسکریپت نسبت بدید که راحت ترین راه حل به صورت زیر هست:



function search()
{
document.getElementById("<%=btn_Search.ClientId %>").click();
}


اگر باز هم درست نشد لطفا کدهاتون رو بزارید بین تگ کد تا راحت تر بشه بررسیش کرد.

موفق باشید

r_mehrizi
چهارشنبه 12 تیر 1387, 11:24 صبح
فایل js را میشناسه چون وقتی این خطا رامیده و من روش کلیک می کنم وارد صفحه js میشه

r_mehrizi
چهارشنبه 12 تیر 1387, 11:47 صبح
از کد زیر استفاده کردم ولی خطای قبلی را میده

document.getElementById("<%=btn_Search.ClientId %>").click();

Behrouz_Rad
چهارشنبه 12 تیر 1387, 11:51 صبح
دقت کنید که در دات نت 2.0 به بعد کنترل های سمت سرور بعد از Render شدن یک ID جدید میگیرن

خیر لزوما اینطور نیست. کنترل ها اگر درون یک Container باشن ID اشون عوض میشه.

@r_mehrizi
شما فایل aspx و js رو اینجا اتچ کنید.

r_mehrizi
چهارشنبه 12 تیر 1387, 12:06 عصر
فایلها را ضمیمه کردم
19794

raravaice
چهارشنبه 12 تیر 1387, 12:13 عصر
خیر لزوما اینطور نیست. کنترل ها اگر درون یک Container باشن ID اشون عوض میشه.
حق با شماست برادر راد ولی من حدس چنین شرایطی رو میزدم!

r_mehrizi (http://barnamenevis.org/forum/member.php?u=62526) عزیز شما دو راه داری!

1.

function search()
{
document.getElementById("<%=btn_Search.ClientId %>").click();
}
از js در بیارید و داخل خود صفحه بزارید

2.مقدار ClientId رو به یه متغییر نسبت بدید و اون متغیر رو داخل Js به کار ببرید.

موفق باشید

r_mehrizi
چهارشنبه 12 تیر 1387, 12:28 عصر
نمیدونم منظورتون را درست فهمیدم یا نه من این کار را کردم


Me.txt_exid.Attributes.Add("onkeydown", "document.getElementById('<%=btn_Search.ClientId %>').click();")

اما هنوز خطای قبل را میده
میشه بیشتر توضیح بدید

raravaice
چهارشنبه 12 تیر 1387, 12:36 عصر
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script type="text/javascript">
function search()
{
document.getElementById("<%=btn_Search.ClientId %>").click();
}

</script>

<RAD:UpdatePanel ID="UpdatePanel1" runat="server" >
.
.
.

r_mehrizi
چهارشنبه 12 تیر 1387, 12:43 عصر
مشکلی که الان داره اینه که کل کالاها با هر شماره اموالی را نشون میده

raravaice
چهارشنبه 12 تیر 1387, 12:49 عصر
توی onkeyup تابع search رو صدا بزن.

موفق باشید

r_mehrizi
چهارشنبه 12 تیر 1387, 12:56 عصر
ممنونم:تشویق:

r_mehrizi
چهارشنبه 12 تیر 1387, 13:08 عصر
حالا من میخوام بگم هر وقت کاربر شماره اموال را وارد کرد و اینتر را زد عمل جستجو انجام بشه

raravaice
چهارشنبه 12 تیر 1387, 13:15 عصر
<script type='text/javascript'>
function keypressed(){
if(event.keyCode=='13'){alert('Enter');}
}
</script>

برای Firefox به جای event.KeyCode از e.which استفاده کنید.
-----------------------------------------------------------------------------------
اگر سئوالاتون توی همین زمینه قرار هست ادامه پیدا کنه توی تالار HTML مطرح و ادامه بدید چون داره از مبحث مرتبط با asp.net دور میشه.

موفق باشید

r_mehrizi
جمعه 14 تیر 1387, 17:51 عصر
raravaice عزیز باید ببخشید من این کد را فبلا به این صورت نوشتم




if(event.keyCode=='13'){
document.getElementById("<%=btn_Search.ClientId %>").click();
}



اما وقتی شماره اموال را وارد میکنم باید چند بار اینتر را بزنم تا عمل جستجو انجام شود

raravaice
شنبه 15 تیر 1387, 12:32 عصر
توی رویداد onkeypress کار کنید.

واینکه به نکته زیر هم که بهش اشاره کردم دقت کنید.


برای Firefox به جای event.KeyCode از e.which استفاده کنید.


موفق باشید