PDA

View Full Version : سوال در مورد کوئری



mohsen.nsb44
پنج شنبه 31 تیر 1389, 10:24 صبح
سلام من از کد زیر برای ارسال اطلاعات به یک صفحه دیگه استفاده می کنم


string query = "default2.aspx";
query += "?name=" + textbox1.text();
Response.Redirect(query);

حال می خوام در صفحه بعد اطلاعاتم در یک تکست باکس نشون داده بشه که از کد زیر استفاده می کنم


TextBox1.Text = Request.QueryString["name"];

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

hlikehamed
پنج شنبه 31 تیر 1389, 12:53 عصر
بهترین راه اینه که توی گریدت از Item template استفاده کنی. توی اون یه تگ <a> تعریف کنی که href رو به این رصورت ست کنی :

href='defult2.aspx?ID=<%# Eval("ID") %>'

که با استفاده از ID اون رکورد می تونی توی صفحه بعد یه query بزنی توی بانکت و اطلاعات رو بکشی بیرون و توی فیلدهات نشون بدی.

alihassanabadi
پنج شنبه 31 تیر 1389, 13:26 عصر
سلام
با توجه به سوالتون gridview شما به يك sqldatasource وصله
خب تو گريد ويو تمام تنظيمات رو انجام بده يعني
در قسمت template ش يه ليبل بزار كه به كليد اصلي وصلش كن و visable ش رو فالس كن كه نشون داده نشه
به اين صورت


<asp:Label ID="Label_ID" runat="server" Text='<%# Eval("id") %>' Visible="False"></asp:Label>

حالا يه لينك بزار و تكسش رو بزار مثلا نمايش اطلاعات و داخل رويداد كليكش اين كد رو بنويس


LinkButton m = (LinkButton)sender;
int i = Int32.Parse(m.CommandArgument);
Label Label_ID = (Label)GridView_NewsList.Rows[i].Cells[4].FindControl("Label_ID");
Response.Redirect("~/Showinformation.aspx?id=" + Label_ID.Text);

لازم به ذكر است بعد از اينكه كويري استرينگ رو بدست آوردي تو پيج لود اين كد رو بنويس


protected void Page_Load(object sender, EventArgs e)
{
SqlDataSource2.SelectCommand = "select *from tblname where name='"+Request.QueryString["name"].ToString()+"'";
}

حالا تو صفحه نمايش اطلاعات يه گريد ويو بزار وبه ديتا سورس وصلش كن وبا اين دستور ميتوني كد فرستاده شده به اين صفحه رو بدست بياري


Request.Params[0].Tostring();

و توشرط sqldatasource اعمالش كني
يعني


SqlDataSource1.SelectCommand = "select * from tblname where id='"+Request.Params[0].ToString()+"'";

hlikehamed
پنج شنبه 31 تیر 1389, 16:13 عصر
سلام
با توجه به سوالتون gridview شما به يك sqldatasource وصله
خب تو گريد ويو تمام تنظيمات رو انجام بده يعني
در قسمت template ش يه ليبل بزار كه به كليد اصلي وصلش كن و visable ش رو فالس كن كه نشون داده نشه
به اين صورت


<asp:LabelID="Label_ID"runat="server"Text='<%# Eval("id") %>'Visible="False"></asp:Label>
حالا يه لينك بزار و تكسش رو بزار مثلا نمايش اطلاعات و داخل رويداد كليكش اين كد رو بنويس


LinkButton m = (LinkButton)sender;
int i = Int32.Parse(m.CommandArgument);
Label Label_ID = (Label)GridView_NewsList.Rows[i].Cells[4].FindControl("Label_ID");
Response.Redirect("~/Showinformation.aspx?id=" + Label_ID.Text);


اینا همه همون یه خطیه که من نوشتم ها. چرا اینقدر پیچیدش می کنی آخه؟ :لبخند::گیج:

alihassanabadi
پنج شنبه 31 تیر 1389, 16:55 عصر
اینا همه همون یه خطیه که من نوشتم ها. چرا اینقدر پیچیدش می کنی آخه؟

دستت درد نكنه ولي ما كاملترش كرديم روش شما هم درسته
و ايشون گفتند كه كدي ميخوام...
به بزرگي خودت ببخش.

alihassanabadi
پنج شنبه 31 تیر 1389, 17:06 عصر
به اين نكته توجه كن


Label Label_ID = (Label)GridView_NewsList.Rows[i].Cells[4].FindControl("Label_ID");


كه من از Edit Clumns...
يه TemplateField اضافه كردم
بنابر اين هنگامEdit Templates
Label_ID و همچنين لينك مورد نظر در سلول 4 قرار دارند
و ميتوني به جاي


Request.Params[0].Tostring();

از كد زير هم استفاده كني


Request.QueryString["name"].ToString();

mohsen.nsb44
شنبه 02 مرداد 1389, 09:42 صبح
سلام
با توجه به سوالتون gridview شما به يك sqldatasource وصله
خب تو گريد ويو تمام تنظيمات رو انجام بده يعني
در قسمت template ش يه ليبل بزار كه به كليد اصلي وصلش كن و visable ش رو فالس كن كه نشون داده نشه
به اين صورت


<asp:LabelID="Label_ID"runat="server"Text='<%# Eval("id") %>'Visible="False"></asp:Label>

حالا يه لينك بزار و تكسش رو بزار مثلا نمايش اطلاعات و داخل رويداد كليكش اين كد رو بنويس


LinkButton m = (LinkButton)sender;
int i = Int32.Parse(m.CommandArgument);
Label Label_ID = (Label)GridView_NewsList.Rows[i].Cells[4].FindControl("Label_ID");
Response.Redirect("~/Showinformation.aspx?id=" + Label_ID.Text);

لازم به ذكر است بعد از اينكه كويري استرينگ رو بدست آوردي تو پيج لود اين كد رو بنويس


protected void Page_Load(object sender, EventArgs e)
{
SqlDataSource2.SelectCommand = "select *from tblname where name='"+Request.QueryString["name"].ToString()+"'";
}

حالا تو صفحه نمايش اطلاعات يه گريد ويو بزار وبه ديتا سورس وصلش كن وبا اين دستور ميتوني كد فرستاده شده به اين صفحه رو بدست بياري


Request.Params[0].Tostring();

و توشرط sqldatasource اعمالش كني
يعني


SqlDataSource1.SelectCommand = "select * from tblname where id='"+Request.Params[0].ToString()+"'";

سلام دوست عزیز ممنوناز لطفت کد هاتو استفاده کردم اما ارور داد
Object reference not set to an instance of an object.

کد استفاده شده


protected void LinkButton1_Click(object sender, EventArgs e)
{
LinkButton m = (LinkButton)sender;
int i = Int32.Parse(m.CommandArgument);
Label label1 = (Label)GridView1.Rows[i].Cells[4].FindControl("lebel1");
Response.Redirect("~/default2.aspx?id=" + label1.Text);
}
protected void Page_Load(object sender, EventArgs e)
{
SqlDataSource1.SelectCommand = "select * from table1 where maharat='"+Request.QueryString["maharat"].ToString()+"'";

{

mohsen.nsb44
یک شنبه 03 مرداد 1389, 09:16 صبح
دوستان سلام
دلیل ارور بالا این خطه
SqlDataSource1.SelectCommand = "select * from tblname where id='"+Request.Params[0].ToString()+"'";

وقتی این خط رو حذف کردم اطلاعات نمایش داده می شد اما وقتی رو لینک باتن کلیک کردم
خط زیرو ارور گرفت

int i = Int32.Parse(m.CommandArgument);


متن خطا
Input string was not in a correct format.
لطفا راهنمایی کنین یه پروژه دارم که باید این موضوع توش بکار گرفته بشه وقت زیادی ندارم.لطفا راهنمایی کنین.

alihassanabadi
یک شنبه 03 مرداد 1389, 09:30 صبح
درود
لطفا به پست شماره 6 توجه كن
اگه ميشه صفحه اي كه اين كار رو انجام ميده آپلود كن تا درستش كنيم

mohsen.nsb44
یک شنبه 03 مرداد 1389, 09:45 صبح
درود
لطفا به پست شماره 6 توجه كن
اگه ميشه صفحه اي كه اين كار رو انجام ميده آپلود كن تا درستش كنيم
متاسفانه اپلود فایل مشکل داره با اینکه حجم فایل من 5 کیلوبایت و فایلش .rar هستش نمی شه اگه میشه ایمیلتون رو بدین واستون صفحه هارو میل کنم
تشکر می کنم از شما

alihassanabadi
یک شنبه 03 مرداد 1389, 10:16 صبح
متاسفانه اپلود فایل مشکل داره با اینکه حجم فایل من 5 کیلوبایت و فایلش .rar هستش نمی شه اگه میشه ایمیلتون رو بدین واستون صفحه هارو میل کنم
تشکر می کنم از شما
دقيقا من هم چند روزي ميشه كه نه ميتونم آپلود كنم نه دانلو
تازه تو بعضي صفحاتم ميرم ميزنه Database Error
روي نام كاربريم كليك كن تمام مشخصاتم هست
a.hassanabadi@hotmail.com
راستي يه سري هم به تاپيك خطاهاي رايج بزن

mohsen.nsb44
یک شنبه 03 مرداد 1389, 11:42 صبح
دقيقا من هم چند روزي ميشه كه نه ميتونم آپلود كنم نه دانلو
تازه تو بعضي صفحاتم ميرم ميزنه Database Error
روي نام كاربريم كليك كن تمام مشخصاتم هست
a.hassanabadi@hotmail.com
راستي يه سري هم به تاپيك خطاهاي رايج بزن
واستون ایمیل کردم منتظرم دوست عزیز

Peyman.Gh
یک شنبه 03 مرداد 1389, 13:07 عصر
از رویداد RowCommand استفاده کنید :
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
int i = int.Parse((string)e.CommandArgument);
Response.Redirect("default.aspx?id=" + i.ToString());
}

و LinkButton , CommandArgument به این صورت مشخص کنید :
<asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click" CommandArgument=<%#Eval("id") %>>اضافه به سبد خرید</asp:LinkButton>
به این صورت زمانی که بر روی LinkButton کلیک میشود ID سطر کلیک شده به رشته تقاضا فرستاده میشود.

mohsen.nsb44
یک شنبه 03 مرداد 1389, 13:25 عصر
از رویداد RowCommand استفاده کنید :
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
int i = int.Parse((string)e.CommandArgument);
Response.Redirect("default.aspx?id=" + i.ToString());
}

و LinkButton , CommandArgument به این صورت مشخص کنید :
<asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click" CommandArgument=<%#Eval("id") %>>اضافه به سبد خرید</asp:LinkButton>
به این صورت زمانی که بر روی LinkButton کلیک میشود ID سطر کلیک شده به رشته تقاضا فرستاده میشود.
دوست عزیز کارهایی رو که گفتید انجام دادم اما زمانی که روی لینک خرید کلیک می کنم هیچ اتفاقی نمیوفته
یعنی منتقل نمی شه به صفحه بعد که اطلاعات رو نمایش بده

Peyman.Gh
یک شنبه 03 مرداد 1389, 13:43 عصر
Response.Redirect("default.aspx?id=" + i.ToString());

mohsen.nsb44
دوشنبه 04 مرداد 1389, 11:17 صبح
اینم صفحه هایی که ساختم

Peyman.Gh
دوشنبه 04 مرداد 1389, 11:45 صبح
در Propertiesا,Events را انتخاب کنید.
بر روی کادر متنی RowCommand دبل کلیک کنید تا رویداد RowCommand آن ایجاد شود.
http://www.barnamenevis.org/forum/attachment.php?attachmentid=53157&stc=1&d=1280130901

mohsen.nsb44
دوشنبه 04 مرداد 1389, 12:00 عصر
دوست عزیز اقا پیمان الان اطلاعات به صفحه بعد منتقل میشه اما نمایشش مشکل داره و ارور زیرو میده

Server Error in '/WebSite12' Application.

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS1061: 'string' does not contain a definition for 'Tostring' and no extension method 'Tostring' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)

Source Error:

Line 16: protected void Page_Load(object sender, EventArgs e)Line 17: {Line 18: Request.Params[0].Tostring();Line 19: SqlDataSource1.SelectCommand = "select * from table1 where id='"+Request.Params[0].ToString()+"'";Line 20:

Peyman.Gh
دوشنبه 04 مرداد 1389, 12:06 عصر
نیازی نیست در رویداد Page_Load کدی بنویسید.
یک شرط برای SqlDataSource ایجاد کنید که رکوردی را نمایش دهد که ID آن برابر با QueryString باشد.


<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [Table1] WHERE ([id] = @id)">
<SelectParameters>
<asp:QueryStringParameter Name="id" QueryStringField="id" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>

موفق باشید.

alihassanabadi
دوشنبه 04 مرداد 1389, 12:24 عصر
سلام
دوست عزيز كدها رو برات اصلاح كردم


-در defalt2.aspx

اين كد همين جوري سر به هوا مونده بود





Request.Params[0].Tostring();




2-در وب كانفيگ كانكشن استرينگ رو تغيير دادم



<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\test.mdf;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>




3-ارور به اين خاطر بود كه مقدار m.CommandArgument

هميشه Null بود


4-كد زير رو به رويداد

GridView1_RowCommand

اضافه كردم ودرست شد




int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = GridView1.Rows[index];


Response.Redirect("~/default2.aspx?id=" + row.Cells[1].Text);








هميشه سعي كن خطاهات رو مديريت كني

كه نمونش تو پيج لود

Default2.aspx

هست

نكته آخر

اگه ميخواي سبد خريد درست كني اين روشت اشتباست يه سرچ بزن تو همين سايت كلي مطالب در مورد سبد خريد هست

موفق باشيد

mohsen.nsb44
دوشنبه 04 مرداد 1389, 13:20 عصر
دوست عزیز مشکلم حل شد میشه بگین کار CommandArgument چیه؟
یکم در موردش توضیح می دین؟

alihassanabadi
دوشنبه 04 مرداد 1389, 18:18 عصر
سلام
CommandArgumen
در كل
شماره رديفي كه در گريد ويو كليك شده رو بهت ميده
با اين كد ميتونيد خودتون تست كنيد


protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
int index = Convert.ToInt32(e.CommandArgument);
Response.Write(index.Tostring());
}

براي پيدا كردن يك كنترل در گريد ويو هم ميتونيم ازش استفاده كنيم
همانطور كه از كامنت كد مشخصه با استفاده از CommandName هم ميتونيم بفهميم كه چه كنترلي در گريد ويو كليك شده است


void CustomersGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
{
// If multiple buttons are used in a GridView control, use the
// CommandName property to determine which button was clicked.
if (e.CommandName == "Add")
{
// Convert the row index stored in the CommandArgument
// property to an Integer.
int index = Convert.ToInt32(e.CommandArgument);
}
}


مرجع : MSDN