PDA

View Full Version : سوال: مشکل در ارسال اطلاعات با querystring



kebriya
دوشنبه 02 مرداد 1391, 14:28 عصر
توی یه صفحه یه GridView1 دارم که یه فیلد select داره میخوام وقتی روی select کلیک کرد code رو به همون صفحه بفرسته با کد زیر این کارو نمی کنه؟


Response.Redirect("Default.aspx?code=" + e.CommandArgument);

download69
دوشنبه 02 مرداد 1391, 14:35 عصر
از قسمت خاصیت های gridview خاصیت datakeyname فیلد code رو هم اضاف کن و بعد در قسمت کدنویسی select گرید برای بدست آوردن مقدار فیلد کد از متد زیر استفاده کن :

gridview1.selecteddatakey(*)

به جای * هم عدد قرار میگیره که این عدد بستگی به این داره که فیلد code در کدام اولویت در خاصیت datakeyname وجود داره یعنی اگر این فیلد بعد از فیلد id باشه عددش میشه 1 و برای id 0 است

kebriya
دوشنبه 02 مرداد 1391, 16:08 عصر
ممنون. ولی نشد
خطای زیرو بده
Object reference not set to an instance of an object.
فکر کنم به GridView1 گیر میده

ahmad156
دوشنبه 02 مرداد 1391, 16:17 عصر
دوست عزیز به جای استفاده از select خود gridview شما ابتدا TemplateField به صورت زیر درست کنین

<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" CommandArgument="<%# Bind('rowid') %>" CommandName="xxx"
Font-Names="Tahoma" Font-Size="Small" Text="حذف" />
</ItemTemplate>
</asp:TemplateField>

که rowid کلید شماست.سپس شما در رویداد RowCommand به صورت زیر عمل کنین

if (e.CommandName == "xxx")
{
Response.Redirect("Default.aspx?code=" + e.CommandArgument);
}

این روش همه جا میتونه بهتون کمک کنه

kebriya
دوشنبه 02 مرداد 1391, 16:26 عصر
این کارو کردم. خطا نداد ولی با کد زیر بازم جواب نداد



if (IsPostBack)
{
string code=Request.QueryString["code"];
TextBox1.Text = code;
}

ahmad156
دوشنبه 02 مرداد 1391, 16:32 عصر
! قبل از IsPostBack فراموش کردین

kebriya
دوشنبه 02 مرداد 1391, 18:07 عصر
بازم نشد. ببینین من یه صفحه مثل عکس زیر دارم
http://vkrt.comuv.com/photos/a1e9c965314c.png
با کلیک انتخاب میخوام کد اتاق و تعداد آن رو بگیره و با تاریخ شروع مقایسه کنه. ولی نمیشه. چون textbox رو خالی میکنه

fakhravari
دوشنبه 02 مرداد 1391, 20:30 عصر
گرید <asp:GridView ID="GridView1" runat="server" DataKeyNames="TopicID" AutoGenerateColumns="False"
e.CommandArgument

kebriya
سه شنبه 03 مرداد 1391, 08:28 صبح
گرید <asp:GridView ID="GridView1" runat="server" DataKeyNames="TopicID" AutoGenerateColumns="False"
e.CommandArgument

این یعنی چی اون وقت؟ خوب منم همین کارو کردم ولی وقتی دکمه انتخاب رو میزنم textbox خالی میشه. من مقدار تایپ شده text هم میخوام که توی کوئری ازش استفاده کنم

ahmad156
سه شنبه 03 مرداد 1391, 09:36 صبح
دوست عزیز خواهشا سوالتون رو واضح بگین شما اول میگین که میخوام با querystring اطلاعات رو بفرستم به یه صفحه دیگه الان میگین میخوام textbox رو پر کنم.:لبخندساده:

kebriya
سه شنبه 03 مرداد 1391, 09:49 صبح
آخه اون querystring مشکلش حل شد. بذارین کامل بگم. توی gridview یه سری اطلاعات از بانک رو نشون میده که کاربر باید تعداد اتاق را از combo انتخاب کنه و تاریخ ورود به هتل رو پر کنه و دکمه انتخاب رو بزنه. حالا من میخوام برنامه تاریخ رو بگیره کد و تعداد اتاق انتخاب شده رو هم بگیره و با این اظلاعات ببینه در اون تاریخ اتاق خالیه یا نه. تا اینجا فقط تونستم کد اتاق رو بفرستم اما تاریخ و تعداد اتاق رو نمیدونم چیکار کنم.
الان واضح گفتم؟؟؟

kebriya
سه شنبه 03 مرداد 1391, 10:29 صبح
میشه لطف کنین بگین چیکار باید بکنم. فکر نکنم کار سختی باشه

ahmad156
سه شنبه 03 مرداد 1391, 10:39 صبح
اگه درست متوجه شده باشم شما اولا برای تاریخ نیاز به یه تقویم فارسی دارین که توی همین سایت جستجو کنین پیدا میکنین.بعد شما میتونین چند تا پارامتر رو با querystring بفرستین (با & از هم جدا کنین)

kebriya
سه شنبه 03 مرداد 1391, 10:57 صبح
ممنون. تاریخ رو که میشه با querystring فرستاد اما تعداد اتاق رو چیکار کنم؟ از همون کد که به دکمه انتخاب نسبت دادم میتونم استفاده کنم؟

ahmad156
سه شنبه 03 مرداد 1391, 11:32 صبح
دوست عزیز اگر شما نیاز به چندین ستون از GridView دارین یه کار دیگه بکنین
CommandArgument رو مقداری ندین داده تا صورت پیش فرضش که rowindex اعمال بشه
بعد توی SelectedIndexChanged به صورت زیر عمل کنین
برای به دست آوردن text یه ستون از سطرتون به شکل زیر

YourGV.Rows[e.CommandArgument].Cell[yourColumnIndex].Text

و برای بدست آوردن مقدار DropDownList به صورت زیر عمل کنین

DropDownList ddl=(DropDownList ) yourGv.Rows[e.CommandArgument].FindControls("yourDropDownListID")

حالا شما DropDownList رو دارین و میتونین مقدارش رو بدست بیارین

kebriya
سه شنبه 03 مرداد 1391, 11:38 صبح
مرسی از اینکه جواب میدین. با این روش میتونم code هم بگیرم؟

ahmad156
سه شنبه 03 مرداد 1391, 11:47 صبح
بله دوست عزیز شما یه فیلد BoundField که visible اون رو false کنین و از طریق بالا بهش دسترسی دارین

kebriya
جمعه 06 مرداد 1391, 14:03 عصر
خب تو حالت SelectedIndexChanged اصلا CommandArgument نداره!!!

ahmad156
شنبه 07 مرداد 1391, 09:51 صبح
ببخشید اشتباه کردم:خجالت: توی همون RowCommand اینکارو بکنین