PDA

View Full Version : چرا توی updatepanel; دومین دراپ داون لیست پست بک نمی شه؟



bahar_engineer
سه شنبه 29 دی 1388, 14:33 عصر
سلام

یه update panel دارم که توش 2 تا dropdownlist هست که باید هر دو auto post back بشن

اما دومی کار نمی کنه ... خیلی جاها این مشکل رو داشتم

راه حلش چیه؟

mehdi.mousavi
سه شنبه 29 دی 1388, 15:18 عصر
سلام یه update panel دارم که توش 2 تا dropdownlist هست که باید هر دو auto post back بشن اما دومی کار نمی کنه ... خیلی جاها این مشکل رو داشتم راه حلش چیه؟

سلام.
نباید مشکلی وجود داشته باشه. لطفا یک کد ساده که بشه توش مشکل رو Reproduce کرد، قرار بدید تا ببینم ایراد کار کجاست.

پاورقی: این کد رو نگاه کنید. بدرستی کار میکنه:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="ddl1" runat="server" AutoPostBack="true">
<asp:ListItem>Item 1</asp:ListItem>
<asp:ListItem>Item 2 </asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="ddl2" runat="server" AutoPostBack="true">
<asp:ListItem>Item 3</asp:ListItem>
<asp:ListItem>Item 4 </asp:ListItem>
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>

bahar_engineer
چهارشنبه 30 دی 1388, 08:47 صبح
سلام.
نباید مشکلی وجود داشته باشه. لطفا یک کد ساده که بشه توش مشکل رو Reproduce کرد، قرار بدید تا ببینم ایراد کار کجاست.

پاورقی: این کد رو نگاه کنید. بدرستی کار میکنه:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="ddl1" runat="server" AutoPostBack="true">
<asp:ListItem>Item 1</asp:ListItem>
<asp:ListItem>Item 2 </asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="ddl2" runat="server" AutoPostBack="true">
<asp:ListItem>Item 3</asp:ListItem>
<asp:ListItem>Item 4 </asp:ListItem>
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>


من می خوام هر دراپ پست بک که می شه مقدارش بره توی یه تکست باکس

فکر می کنم مشکل از اینجا باشه که دراپ 1 وابسته به دراپ 2 هست و با تغییر دراپ 2 تغییر می کنه. مثلا اگه دراپ 2 یکی از آیتم های بانک رو می گیره که کدش 7 هست ... دراپ 1 هم پست بک می شه و یه خصوصیت دیگه از رکورد شماره 7 رو می گیره ... اما با اینکه پست بک می شه و خودش تغییر می کنه تکست باکس رو تغییر نمی ده!

توی ضمیمه یه نمونه ساده گذاشتم .. ببینید متوجه می شید

mehdi.mousavi
چهارشنبه 30 دی 1388, 15:01 عصر
یه قهرمان پیدا نمی شه بفهمه این مشکلش چیه؟!!!:شیطان:

سلام.
کدی که فرستاده اید مشکل خاصی نداره. DropDownList2 کامل داره پر میشه، اما چون هنوز هیچ آیتمی توش Select نشده، طبیعی هستش که DropDownList1 خالی باشه. وقتی آیتمی از DropDownList2 انتخاب میکنم، آیتم متناظر با اون توی DropDownlist1 بدرستی ظاهر میشه. اما چون فقط یک آیتم توی DropDownList1 وجود داره، طبیعی هستش که دیگه نتونم آیتم جدیدی رو انتخاب کنم که بخواد PostBack اتفاق بیفته...


اول از همه شما کدتون رو مرتب بنویسید. اینطور آوردن دستورات SQL توی HTML کار صحیحی نیستش.
دوم اینکه توی فایلهای ASPX یا بقیه فایلهایی که توی Visual Studio باز میکنید، اگر یه دفعه کلید CTRL+K+D رو فشار بدید، Source اتون Reformat میشه و همه نوشته هاتون از نظر indenting مرتب میشن. سعی کنید اینکارو مدام انجام بدید!
سوم، جای اینکه OnTextChanged رو برای DropDownList بگیرید، بهتره از OnSelectedIndexChanged استفاده کنید.

در کل، ایرادی که شما به اون اشاره کردید رو من ندیدم. شاید sample ای گذاشته اید با چیزی که دنبالش بودید فرق داره. در هر حال، به نظر من این کد مشکلی که شما عنوان کردید رو نداره.

موفق باشید.

bahar_engineer
چهارشنبه 30 دی 1388, 15:27 عصر
سلام.
کدی که فرستاده اید مشکل خاصی نداره. DropDownList2 کامل داره پر میشه، اما چون هنوز هیچ آیتمی توش Select نشده، طبیعی هستش که DropDownList1 خالی باشه. وقتی آیتمی از DropDownList2 انتخاب میکنم، آیتم متناظر با اون توی DropDownlist1 بدرستی ظاهر میشه. اما چون فقط یک آیتم توی DropDownList1 وجود داره، طبیعی هستش که دیگه نتونم آیتم جدیدی رو انتخاب کنم که بخواد PostBack اتفاق بیفته...


اول از همه شما کدتون رو مرتب بنویسید. اینطور آوردن دستورات SQL توی HTML کار صحیحی نیستش.
دوم اینکه توی فایلهای ASPX یا بقیه فایلهایی که توی Visual Studio باز میکنید، اگر یه دفعه کلید CTRL+K+D رو فشار بدید، Source اتون Reformat میشه و همه نوشته هاتون از نظر indenting مرتب میشن. سعی کنید اینکارو مدام انجام بدید!
سوم، جای اینکه OnTextChanged رو برای DropDownList بگیرید، بهتره از OnSelectedIndexChanged استفاده کنید.

در کل، ایرادی که شما به اون اشاره کردید رو من ندیدم. شاید sample ای گذاشته اید با چیزی که دنبالش بودید فرق داره. در هر حال، به نظر من این کد مشکلی که شما عنوان کردید رو نداره.

موفق باشید.

شما درست می فرمایید اما من در واقع می خوام هر متنی که توی dropdown ها اومد توی تکست باکس متقابلا کپی بشه... لازم و ضروریه چون این تکست باکس ها توی سایت اصلی لینک اون مطلب رو نشون می دن .
برای این کار باید چه اقدامی بکنم؟ با selected index change هم نمی شه
در ضمن این یه وب سایت تست بود که خیلی عجله ای گذاشتم.. برای همین بهم ریخته است

mehdi.mousavi
چهارشنبه 30 دی 1388, 15:46 عصر
شما درست می فرمایید اما من در واقع می خوام هر متنی که توی dropdown ها اومد توی تکست باکس متقابلا کپی بشه... لازم و ضروریه چون این تکست باکس ها توی سایت اصلی لینک اون مطلب رو نشون می دن . برای این کار باید چه اقدامی بکنم؟ با selected index change هم نمی شه در ضمن این یه وب سایت تست بود که خیلی عجله ای گذاشتم.. برای همین بهم ریخته است

بسیار خوب. برای حل این مشکل میتونید به این روش اقدام کنید:

protected void DropDownList1_DataBound(object sender, EventArgs e)
{
TextBox1.Text = DropDownList1.Text;
}


و تو فایل ASPX هم:


<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="AccessDataSource2"
DataTextField="comment" DataValueField="code" OnTextChanged="DropDownList1_TextChanged"
Width="173px" OnDataBound="DropDownList1_DataBound">

اینطوری هر وقت DropDownList1 بایند بشه، مقدار انتخاب شده در اون بطور خودکار در TextBox1 قرار میگیره.

موفق باشید.