PDA

View Full Version : ارسال پارامتر به user control



hgh.just.hony
یک شنبه 19 آذر 1391, 08:02 صبح
سلام
من یه دکمه دارم تو گرید ویو خوذم که با کلیک کردن روی اون یه DIV نمایان میشه که user control توش نمایش داده میشه
من می خوام دوتا ایدی از داخل گرید برای user control بفرستم ااما چه جوری ؟:متفکر:

mohammad_23779
یک شنبه 19 آذر 1391, 09:10 صبح
سلام
چندتا راه حل براتون وجود داره:

فعلاً این یکی فکر کنم کارتون رو راه بندازه.... داخل گریدویو خودتون و درون کد دکمه مقدارهایی رو که می خواهید به user control پاس بدید به viewstate یا session اضافه کنید.بعد در داخل فرم لود user control اونها رو از view state یا session گرفته به object موردنظرتون بدید... همین...

hgh.just.hony
یک شنبه 19 آذر 1391, 09:38 صبح
سلام
ممنون
اما دو مشکل هست
اول اینکه یوزر کنترلم در زمان لود صفحه لود شده و با زدن کلیک فقط نمایش می ده و تابع لوذ بالا نمیاد مگه با پست بک
دوم اینکه سژن تمی خوام باشه
view state باید چک کنم

راه دیگه چیه ؟

orca13
یک شنبه 19 آذر 1391, 17:18 عصر
از HiddenField هم میشه استفاده کنید!

alonemm
یک شنبه 19 آذر 1391, 17:27 عصر
باسلام:

برای ارسال مقادیر از گرید شما باید یک ستون از نوع TemplateField داشته باشید و یک دکمه که در خاصیت CommandArgument شی فیلد مربوطه رو بایند کرده باشید.
سپس بعد از کلیک شدن بروی این دکمه onrowcommand مربوط به شی گرید اجرا میشود که در اونجا شما توسط شی که از نوع GridViewCommandEventArgs هست میتونید به مقدار بایند شده فیلد موردنظر در سطر انتخابی دست پیدا کنید و در یکی از state management ذخیره کنید و در یوزر کنترل مورد استفاده قرار بدید.





موفق باشید.

simple
دوشنبه 20 آذر 1391, 20:31 عصر
روش ارائه شده بسیار خوب است اما به نظر می رسد همه جا کاربردی نیست. مثلا من یک یوزر کنترل برای نمایش اخبار دارم و هر مرتبه کاربر بر روی یکی از خبرها کلیک کرد بایستی یوزر کنترل ViewNews لود شود. اینجا چه راهکاری ارائه می کنید؟

hgh.just.hony
چهارشنبه 22 آذر 1391, 08:19 صبح
سلام
ممنون از جواب هاتون
اما من درست سوالم و بیان نکردم (عذر خواهی منو پذیرا باشید رفقا)
من دوتا تگ <a> دارم که یکی تخلفات و دیگری برای ارسال ایمیل هست(این تگ ها در تمام سطرهای گریدم هست)و هرکدام از USER CONTROLبرای خودش یه DIV داره که در بعد از گریدم نشسته. با فشار دادن تگ ها این DIV (بدون Post Back ) نمایش داده میشه.کد کالا و کد شرکت را در URL می تونم بریزم (:


<GRIDVIEW>
<div style="float:right;height:27px; width:30px;display:block;cursor:pointer">
<a id="tkh" href='#uctkhlf?U1=<%# Eval("Prd_Id") %>&U2=<%# Eval("Cmp_Id") %>' style="text-decoration:none;border:none;">
<asp:Image ID="ImageButton2" runat="server" Height="30px"
ImageUrl="~/Icons/police.png" ToolTip="گزارش تخلف این محصول"
Width="30px" /></a>
<script type="text/javascript">
$('#tkh').click(function () { $('#maintakhalof').show('slow') });</script>
</div>
BLAH BLAH BLHA

</GRIDVIEW>
<div id="maintakhalof" style="display:none" class="overlay" >
<div id="uctkhlf"style="margin:5% 20%; background-position:center;background-color:White;">
<uc4:UC_takhalof ID="UC_takhalof1" runat="server" />
</div>
</div>

<div id="mainemail" style="display:none" class="overlay" >
<div id="ucemail" style="margin:5% 20%; background-position:center;background-color:White;">

<uc3:UC_UI_email ID="UC_UI_email1" runat="server" />

</div>
</div>



) و چون User Comntrol قبلا لود شده نمی تونم کد ها رو بدون پست بک بگیرم و نام شرکت و از این طریق به کاربر نشون بدم.پس بیخیالش شدم.تنها پست یک من تو دکمه ارسال تخلف هست اما اونم ادرس URL را کامل نمیگیره که کدها را بتونه بخونه. مشکل 2 اینه که من برای ارسال ایمیل نمی تونم ایمیل شرکت و تو ادرس بار بریزمو نمی دونم این و چه جوری با کمترین پست بک انجام بدم
من میخام بدون بازگشت به سرور این کار می خوام انجام بشه

alihassanabadi
چهارشنبه 22 آذر 1391, 17:59 عصر
سلام
از jquery برای نیل به هدفت استفاده کن بدون کمترین postBack
باید بتونی از Ajax جی کویری استفاده کنی
یک Handler.ashx به پروژت اضافه کن و پارامتر هارو به این فایل از طریق ajax جی کویری بفرست
اینجا رو تغییر بده

<script type="text/javascript"> $('#tkh').click(function () { $('#maintakhalof').show('slow') });</script>

$(document).ready(function () {
$('#tkh').click(function () {
$.ajax({
type: "POST",
//میتونی به هندلرت اون آیدی مشخص رو بفرستی
url: "Handler.ashx?id=" + $('#btn').text() + "",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (data) {
var f = data.state;
alert(f);
$('#maintakhalof').show('slow');
},
error: function (x, e) {
//error
}
});
});
}
);

این فقط یک روش بود و فکر میکنم روش خوبی هم هست فایل Handler.ashx رو خودت طراحی کن چیزی نداره نمونه کد تو اینترنت زیاد هست جوینده یابندست
آموزش JSON
http://www.w3schools.com/json/default.asp
موفق باشی