PDA

View Full Version : سوال: AutoPostBack در چک باکس لیست



saminjoon
دوشنبه 25 آذر 1392, 14:04 عصر
سلام دوستان
وقتتون بخیر:لبخندساده:


یه موردی هس که خیلی فکرمو مشغول کرده ولی تا الان به نتیجه ای نرسیدم:ناراحت:


من یه جدول دارم که لیست قطعات کامپیوترو نگه میداره(مانیتور، ماوس ، کیبوردو...)

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

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

ولی نمیدونم چطور. با توجه به اینکه تعداد قطعات در جدول دیتابیس متغیر است ولی خصوصیات هرکدام از آنها ثابت است (مدل و شماره سریال)

اگه قطعات را در یک چک باکس لیست نشون بدم اونوقت چطور میتونم با انتخاب هر گزینه 2 تکس باکس مربوط به اونو بسازم که در آخر بشه مقدارشو خوند و ذخیره کرد؟

یا اگر کسی راه بهتری به نظرش میاد لطفا بهم بگید

لطفا هرکی بلده راهنمایم کنه ،خیلی مهمه برام...:افسرده:

ali.n93
دوشنبه 25 آذر 1392, 17:17 عصر
به نظر من یه گرید ویو استفاده کن با 4 فیلد (چک باکس، نام قطعه، تکست باکس اول، تکست باکس دوم)
تکست باکس ها به صورت پیشفرض enabled=false باشه. وقتی یک چک باکس انتخاب میشه enabled=true بشه.
البته میشه هم بطور پیشفرض true باشه که نیازی به جاوااسکریپت هم نباشه

saminjoon
دوشنبه 25 آذر 1392, 19:27 عصر
به نظر من یه گرید ویو استفاده کن با 4 فیلد (چک باکس، نام قطعه، تکست باکس اول، تکست باکس دوم)
تکست باکس ها به صورت پیشفرض enabled=false باشه. وقتی یک چک باکس انتخاب میشه enabled=true بشه.
البته میشه هم بطور پیشفرض true باشه که نیازی به جاوااسکریپت هم نباشه

ممنون علی آقا
فکر خوبیه ولی چطور میتونم خاصیت AutoPostBack برای چک باکسم بذارم به طوری که با انتخاب هر چک باکس از گریدویو ، enabled تکس باکس مربوط به همون ردیف true بشه؟
میخوام به طور پیش فرض enabled=false .

ali.n93
دوشنبه 25 آذر 1392, 20:28 عصر
روشی که من گفتم رو میتونی با جاوااسکریپت پیاده سازی کنی. خیلی هم بهتره و عملیات سمت سرور نیاز نداره. کد gridview ای که ساختی رو بزار تا کد جاوااسکریپتش رو برات بنویسم.

saminjoon
دوشنبه 25 آذر 1392, 20:56 عصر
روشی که من گفتم رو میتونی با جاوااسکریپت پیاده سازی کنی. خیلی هم بهتره و عملیات سمت سرور نیاز نداره. کد gridview ای که ساختی رو بزار تا کد جاوااسکریپتش رو برات بنویسم.



<asp:GridView ID="mygrid" runat="server" AllowSorting="true"
BorderWidth="0" CellPadding="2" DataKeyNames="id"
GridLines="None" HeaderStyle-BackColor="#E3E3E3"
HeaderStyle-BorderColor="#C1C1C1" HeaderStyle-BorderStyle="Solid"
width="98%">
<Columns>
<asp:TemplateField HeaderStyle-Height="35px" HeaderStyle-Width="3%"
ItemStyle-VerticalAlign="top" ItemStyle-Width="3%">
<ItemTemplate>
<asp:CheckBox ID="rowcheck" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<div align="right">
نام قطعه</div>
</HeaderTemplate>
<ItemTemplate>
<div align="right" dir="rtl">
<%# Container.DataItem("nam")%></div>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<div align="right">
مدل کالا</div>
</HeaderTemplate>
<ItemTemplate>
<div align="right" dir="rtl">
<asp:TextBox ID="model" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<div align="center">
کد کالا
</div>
</HeaderTemplate>
<ItemTemplate>
<div align="center" >
<asp:TextBox ID="cod" runat="server" ></asp:TextBox>
</div>
</ItemTemplate>
</asp:TemplateField>

</Columns>
</asp:GridView>

saminjoon
چهارشنبه 27 آذر 1392, 17:37 عصر
میشه لطفا کد جاوااسکریپتشو برام بذارید؟

ali.n93
چهارشنبه 27 آذر 1392, 23:51 عصر
میشه لطفا کد جاوااسکریپتشو برام بذارید؟
اول یه توضیح بدم. کدهایی که نوشتم دقیقا روی همین گریدویو کار میکنه و نباید ترتیب ستونهای گریدویو رو تغییر بدین. البته اگه تغییر دادید هم درست کردن کدهای جاوا کار سختی نیست اما به هر حال این چیزی که الان نوشتم رو خودم تست کردم و کار میکنه. اول تکست باکس ها غیرفعال هستند و نمیشه توی اونا چیزی نوشت و اگه چک باکس اون سطر فعال بشه میشه توی تکست باکس ها هم متن نوشت.
خب حالا کد جاوااسکریپت زیر رو به صفحه اضافه کن

<script>
function checkbox_change(sp) {
var txt1 = sp.parentNode.parentNode.children[2].children[0].children[0].id;
var txt2 = sp.parentNode.parentNode.children[3].children[0].children[0].id;
if (document.getElementById(txt1).hasAttribute("disabled")) {
document.getElementById(txt1).removeAttribute("disabled");
document.getElementById(txt2).removeAttribute("disabled");
}
else {
document.getElementById(txt1).disabled = "disabled";
document.getElementById(txt2).disabled = "disabled";
document.getElementById(txt1).value = "";
document.getElementById(txt2).value = "";
}
}
</script>


کد زیر رو هم به جای گریدویو کپی کن. چند تا تغییر کوچیک دادم

<asp:GridView ID="mygrid" runat="server" AllowPaging="True" AllowSorting="True"
BorderWidth="0px" CellPadding="2"
GridLines="None" HeaderStyle-BackColor="#E3E3E3"
HeaderStyle-BorderColor="#C1C1C1" HeaderStyle-BorderStyle="Solid"
width="98%">
<Columns>
<asp:TemplateField HeaderStyle-Height="35px" HeaderStyle-Width="3%"
ItemStyle-VerticalAlign="top" ItemStyle-Width="3%">
<ItemTemplate>
<asp:CheckBox ID="rowcheck" runat="server" onchange="checkbox_change(this);" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<div align="right">
نام قطعه</div>
</HeaderTemplate>
<ItemTemplate>
<div align="right" dir="rtl">
<%# Container.DataItem("nam")%></div>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<div align="right">
مدل کالا</div>
</HeaderTemplate>
<ItemTemplate>
<div align="right" dir="rtl">
<asp:TextBox ID="model" runat="server" Enabled="False"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<div align="center">
کد کالا
</div>
</HeaderTemplate>
<ItemTemplate>
<div align="center" >
<asp:TextBox ID="cod" runat="server" Enabled="False"></asp:TextBox>
</div>
</ItemTemplate>
</asp:TemplateField>

</Columns>
</asp:GridView>

saminjoon
پنج شنبه 28 آذر 1392, 14:56 عصر
ممنون بابت وقتی که گذاشتین
ولی من دقیقا همینارو گذاشتم و کار نکرد :ناراحت:
میدونید احتمالا مشکل از کجاس؟

ali.n93
پنج شنبه 28 آذر 1392, 19:15 عصر
خواهش می کنم
یعنی وقتی که روی چک باکس کلیک میکنی بازم تکست باکس ها فعال نمیشه؟! وقتی که تکست باکس ها فعال میشه از نظر ظاهری فرقی با قبلش نمیکنه ها! روش کلیک کن تا مطمئن بشی
تگ script رو کجا کپی کردی؟
در ضمن دقت کن که جاوااسکریپت مرورگر حتما فعال باشه

saminjoon
پنج شنبه 28 آذر 1392, 20:37 عصر
جاوااسکریپت مرورگرم فعاله
script رو تو تگ head گذاشتم

ali.n93
پنج شنبه 28 آذر 1392, 20:49 عصر
یه کاری کن. پروژه رو اجرا کن. صفحه رو توی مرورگر باز کن و قبل از اینکه روی چک باکس ها کلیک کنی روی صفحه کلیک راست کن و view page source رو بزن. کدها رو کامل کپی کن و بزار تا چک کنم

saminjoon
پنج شنبه 28 آذر 1392, 22:43 عصر
<html xmlns="http://www.w3.org/1999/xhtml"> <head><title> </title> <script type="text/javascript" language="javascript"> function checkbox_change(sp) { var txt1 = sp.parentNode.parentNode.children[2].children[0].children[0].id; var txt2 = sp.parentNode.parentNode.children[3].children[0].children[0].id; if (document.getElementById(txt1).hasAttribute("disab led")) { document.getElementById(txt1).removeAttribute("dis abled"); document.getElementById(txt2).removeAttribute("dis abled"); } else { document.getElementById(txt1).disabled = "disabled"; document.getElementById(txt2).disabled = "disabled"; document.getElementById(txt1).value = ""; document.getElementById(txt2).value = ""; } } </script> <style type="text/css"> .text { font-family: Tahoma; font-size: 12px; color: #000000; font-weight: normal; } input, select { font-family: Tahoma,Arial, Helvetica, Sans-Serif; font-size: 12px; font-style: normal; font-weight: normal; } a:link { font-family: Tahoma,Arial, Helvetica, Sans-Serif; text-decoration: none; color: #F90101; } a:link, a:visited { color: #034af3; } a { font-family: Tahoma,Arial, Helvetica, Sans-Serif; text-decoration: none; color: #F90101; } </style> </head> <body> <form method="post" action="testgv.aspx" id="form1"> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="8wFdoYw1TrulC7Rz3x87XnqqeOtphbhfxU4fVqYocaw18vb4O3 +Ri3+lP/0VeJamFAP4PWoe4fmVuPbYRULcFPmNCdmk/Qh/GO36Rr2GLe10DJi9JL1a6QZQw+viBGzdQj0Unu1U28T2pd3ZX1 6hwimtNmx3aWfQo+fnTvGPbiVPtllKfTAHAiEI9tA+9sLoV4Ws ct9U7AIp6R7445JfisewECSTCxRXdyjYMOrlTZQ5Vzod8lSHbh BsSz1OpnzOqlQGhkCLtkBsPSdCv9qYyAHMUENrnt7vKQqoVVq3 WBW+gKWsHODQ9+biwYJHxSLXb7UGIMmTH+3zGAFe3VskGEAQbz hYupqA4PVAS3JujDop+GXs2HJXPjqxEZG2GkDiNyaytooAZMmA Z1yZGzuoOKdR8gWWAkLkFJVxSztIlzVVjHOyCpUplW/vGzMnZiQoN5MqczksSWa2C94mXFRbwSAkt496Gnu/7aFJmS2ewBadeaFzCdTK6DXIkXljTFcKBTBr3RVcW4SJtUwGO8 3lhBYxXPgmvNaSSiGs4S9V4nuRtjqy6Y6h+hiHkLd+Ze5e0E9l LzvWbKBHZZ2kxJSkBS5BPLBxvM4i9t0gtQKWea9CSmWTc9E+Ob s/8wdYLAta5a3JpjmHNsL+XPmWj/f6jvwyvWqzkLnhYUHz98iQl9BDyRj2ud0cxqk2Kds4+l/xElq3U3OAnfNM+cNwbONEyaNOnTRy+QrcP2s0LiByN/4=" /> </div> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATEENCRYPTED" id="__VIEWSTATEENCRYPTED" value="" /> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="jVVSjwRVZHfFY6mlXvXowp1wFAinK3v82RhNQsl68uJKF7Hv7e K2auPoxQMfSYDdr4yZmvQdvgWDJY7I19tAAP2iUxQGzxyd5RYe t3p5h7mv14m5ewk0x8awKSNbCK+EjbVsoG1do1LA7IzUJBY/QiZb/Vy6rNajMXaD/kov7W3oj4FzkOhemtMYzDWAhqxB+hH4cnnTHJVdR/7fMhoT6g==" /> </div> <div> <input type="submit" name="btn" value="Button" id="btn" /> <div> <table class="text" cellspacing="0" cellpadding="2" id="mygrid" style="border-width:0px;width:98%;border-collapse:collapse;"> <tr style="background-color:#E3E3E3;border-color:#C1C1C1;border-width:1px;border-style:Solid;"> <th scope="col" style="height:35px;width:3%;">&nbsp;</th><th scope="col"> <div align="right"> نام قطعه</div> </th><th scope="col"> <div align="right"> مدل کالا</div> </th><th scope="col"> <div align="center"> کد کالا </div> </th> </tr><tr> <td valign="top" style="width:3%;"> <span onchange="checkbox_change(this);"><input id="mygrid_rowcheck_0" type="checkbox" name="mygrid$ctl02$rowcheck" /></span> </td><td> <div align="right" dir="rtl"> تست1</div> </td><td> <div align="right" dir="rtl"> <input name="mygrid$ctl02$model" type="text" id="mygrid_model_0" disabled="disabled" class="aspNetDisabled" /> </td><td> <div align="center" > <input name="mygrid$ctl02$cod" type="text" id="mygrid_cod_0" disabled="disabled" class="aspNetDisabled" /> </div> </td> </tr><tr> <td valign="top" style="width:3%;"> <span onchange="checkbox_change(this);"><input id="mygrid_rowcheck_1" type="checkbox" name="mygrid$ctl03$rowcheck" /></span> </td><td> <div align="right" dir="rtl"> تست2</div> </td><td> <div align="right" dir="rtl"> <input name="mygrid$ctl03$model" type="text" id="mygrid_model_1" disabled="disabled" class="aspNetDisabled" /> </td><td> <div align="center" > <input name="mygrid$ctl03$cod" type="text" id="mygrid_cod_1" disabled="disabled" class="aspNetDisabled" /> </div> </td> </tr><tr> <td valign="top" style="width:3%;"> <span onchange="checkbox_change(this);"><input id="mygrid_rowcheck_2" type="checkbox" name="mygrid$ctl04$rowcheck" /></span> </td><td> <div align="right" dir="rtl"> تست3</div> </td><td> <div align="right" dir="rtl"> <input name="mygrid$ctl04$model" type="text" id="mygrid_model_2" disabled="disabled" class="aspNetDisabled" /> </td><td> <div align="center" > <input name="mygrid$ctl04$cod" type="text" id="mygrid_cod_2" disabled="disabled" class="aspNetDisabled" /> </div> </td> </tr><tr> <td valign="top" style="width:3%;"> <span onchange="checkbox_change(this);"><input id="mygrid_rowcheck_3" type="checkbox" name="mygrid$ctl05$rowcheck" /></span> </td><td> <div align="right" dir="rtl"> تست4</div> </td><td> <div align="right" dir="rtl"> <input name="mygrid$ctl05$model" type="text" id="mygrid_model_3" disabled="disabled" class="aspNetDisabled" /> </td><td> <div align="center" > <input name="mygrid$ctl05$cod" type="text" id="mygrid_cod_3" disabled="disabled" class="aspNetDisabled" /> </div> </td> </tr><tr> <td valign="top" style="width:3%;"> <span onchange="checkbox_change(this);"><input id="mygrid_rowcheck_4" type="checkbox" name="mygrid$ctl06$rowcheck" /></span> </td><td> <div align="right" dir="rtl"> تست5</div> </td><td> <div align="right" dir="rtl"> <input name="mygrid$ctl06$model" type="text" id="mygrid_model_4" disabled="disabled" class="aspNetDisabled" /> </td><td> <div align="center" > <input name="mygrid$ctl06$cod" type="text" id="mygrid_cod_4" disabled="disabled" class="aspNetDisabled" /> </div> </td> </tr><tr> <td valign="top" style="width:3%;"> <span onchange="checkbox_change(this);"><input id="mygrid_rowcheck_5" type="checkbox" name="mygrid$ctl07$rowcheck" /></span> </td><td> <div align="right" dir="rtl"> تست6</div> </td><td> <div align="right" dir="rtl"> <input name="mygrid$ctl07$model" type="text" id="mygrid_model_5" disabled="disabled" class="aspNetDisabled" /> </td><td> <div align="center" > <input name="mygrid$ctl07$cod" type="text" id="mygrid_cod_5" disabled="disabled" class="aspNetDisabled" /> </div> </td> </tr><tr> <td valign="top" style="width:3%;"> <span onchange="checkbox_change(this);"><input id="mygrid_rowcheck_6" type="checkbox" name="mygrid$ctl08$rowcheck" /></span> </td><td> <div align="right" dir="rtl"> تست7</div> </td><td> <div align="right" dir="rtl"> <input name="mygrid$ctl08$model" type="text" id="mygrid_model_6" disabled="disabled" class="aspNetDisabled" /> </td><td> <div align="center" > <input name="mygrid$ctl08$cod" type="text" id="mygrid_cod_6" disabled="disabled" class="aspNetDisabled" /> </div> </td> </tr> </table> </div> <div> <span id="lbe"></span></div></div> </form> </body> </html>

ali.n93
پنج شنبه 28 آذر 1392, 23:20 عصر
توی تابع جاوااسکریپت که نوشتم سه تا کلمه ی disabled هست توی خط 5 و 6 و 7 که وسط هر کدومش دو تا space خورده. اون space ها رو پاک کن. درست میشه.

saminjoon
یک شنبه 01 دی 1392, 17:57 عصر
:تشویق:
واقعا ممنون علی آقا
کمک خیلی بزرگی بهم کردید
موفق باشید:لبخندساده: