PDA

View Full Version : سوال: مشکلی ساده در کار با ('doPostBack('UpdatePanel1____



elham1611
جمعه 19 آذر 1389, 01:30 صبح
دوستان
این تابع چرا قسمت () document.getElementById("TextBox1").Focus
رو اجرا نمیکنه؟

یعنی بعد از اینکه این تابع در یک textbox فراخوانی شد و ('doPostBack('UpdatePanel1____
انجام شد اون وقت اشاره گر از textbox خارج میشه و برای نوشتن دوباره در اون باید روش کلیک کرد
چرا؟:افسرده:



<script type="text/javascript">

function UpdatePanel1()
{
__doPostBack('UpdatePanel1');

document.getElementById("TextBox1").Focus();
}


</script>

PhoenixNet
جمعه 19 آذر 1389, 08:55 صبح
سلام
به جای کد خودتون :


document.getElementById("TextBox1").Focus();

کد زیر رو استفاده کنید.



document.getElementById('<%=TextBox1.ClientID %>').focus();


جاوا اسگریپت به حروف کوچک و بزرگ حساس است.

elham1611
جمعه 19 آذر 1389, 12:49 عصر
ممنون
ولی این هم تست کردم و کار نکرد:ناراحت:

PhoenixNet
جمعه 19 آذر 1389, 16:49 عصر
سلام
چی کار نکرد؟
ممکنه خط قبلش ارور بده.شما با IE تست کن.ببین ارور جاوا اسکریپت میده یا نه(یه مثلث زرد گوشه پایین سمت چپ).اروری رو که میده ببینید یا اینجا بذارید.اون خط فوکوس به تنهایی کار می کند.خودم تست کردم.

elham1611
جمعه 19 آذر 1389, 19:09 عصر
احتمالا به خاطر تاثیر کدهای دیگه ایست که دارم. و باعث میشه نتیجه متفاوت گرفت.
با این 2 کد مشکل بر طرف شد. اما مشکل جدیدی پیش آمد:اشتباه:

کد اول :

protected void UpdatePanel1_Load(object sender, EventArgs e)
{
TextBox1.Focus();
}


دوم :

protected void UpdatePanel1_Load(object sender, EventArgs e)
{
ScriptManager1.SetFocus("TextBox1");

}

مشکل اینه که وقتی روی textbox فوکوس میکنه اشاره گر موس دوباره با ابتدای textbox برمیگرده.
یعنی اگر در حال نوشتن عدد باشید به جای اینکه اعدادد رو به حلو وارد بشوند رو به عقب وارد میشوند.

PhoenixNet
جمعه 19 آذر 1389, 19:16 عصر
سلام
کامل متوجه نشدم.به نظرم شما بگین در کل می خواهید چه کاری رو انجام بدید فکر می کنم بهتر بتونم کمک کنم.

elham1611
جمعه 19 آذر 1389, 19:59 عصر
ممنون که به دیگران کمک میکنید دوست عزیز.
توضیح میدم:
یک صفحه جستجو دارم با کنترلهایی که کاربر برای جستجو استفاده میکنه و همه رو درون یک updatepanel گذاشتم.چرا ؟ برای اینکه یک
Formview هم اون داخل دارم که تعداد مواردی رو که با درخواستهای کاربر هماهنگی داره رو نشون میده.(فقط تعدادششون )

خب این کار با کنترلهای dropwoen سادست و فقط autopostback رو فعال میکنیم
اما با textbox تا وقتی کاربر در اون خارج نشده باشه autopostback فعال نمیشه درصورتی که میخوام با تایپ هر عبارت postback انجام بشه و formview به روز بشه.
تا اینجا رو بدست اوردم و از ('doPostBack('UpdatePanel1___ استفاده کردم.:تشویق:

بعدش اشاره گر گم میشد که اونم با کدهای بالا دوباره برگردوندم روی تکس باکش
اما حالا وقتی برمیگرده به جای اینکه برگرده به انتهای تکس باکس برمیگرده به ابتداش.
یعنی وقتی بخواهیم بنویسیم 123 میشه 321 :افسرده:

نمیدونم منظورم رو تونستم بیان کنیم.

PhoenixNet
جمعه 19 آذر 1389, 21:59 عصر
Textbox رو خارج از UpdatePanel بزارید.

elham1611
شنبه 20 آذر 1389, 00:08 صبح
عالی:قلب:
خیلی ممنون از پیشنهادت واقعا هوشمندانه بود. از کلی کد و جاوا اسکریپت با این کار میتونم بگذرم
اگه هنوز به این تاپیک سر میزنید یه سوال دیگه برام پیش اومده. چون من همسه کنترلها رو از updatepanel دیگه خارج کردم.
حالا میخوام بدون اون که autopostback کنترل dropdown رو فعال کنم وقتی انتخاب تغییر میکنه یک تابع جاوا اسکریپت عمل کنه.
از این کد استفاده کردم ولی OnSelectedIndexChanged یا چیزی مشابه به اون تعریف نشده.
با onkeyup یا ... هم نمیشه .
به نظر شما چی کار میشه کرد


DropDownList1.Attributes.Add("OnSelectedIndexChanged", "function_text()");
بازم ازتون ممنونم امیدارم روزی بتونم جبران کنم.

PhoenixNet
شنبه 20 آذر 1389, 00:18 صبح
خواهش می کنم.


<asp:DropDownList ID="DropDownList1" onchange="YourFounction()" runat="server">
<asp:ListItem Value="t1">t1</asp:ListItem>
<asp:ListItem>t2</asp:ListItem>
<asp:ListItem>t3</asp:ListItem>
</asp:DropDownList>


به این شکل هم میشه :




document.getElementById('<%DropDownList1.ClientID %>').onchange = "YourFounction();

elham1611
شنبه 20 آذر 1389, 00:21 صبح
درسته حواسم نبود .
تمام مشکلات بر طرف شد.
با امید موفقیت برای شما.
فعلا بجز ثبت تشکر راه دیگه ای برای قدر دانی ندارم.

/الهام ط