PDA

View Full Version : سوال: linkbutton در ستون template یک gridview



arhnmn
یک شنبه 21 تیر 1388, 16:54 عصر
سلام دوستان. من یک gridview دارم که یک ستون template داره ,تو این ستون linkbutton گذاشتم که برای مشاهده ی هر سطری از این gridview هستش. من میخوام روی این linkbutton کلیک کردم بره به صفحه ایی که بتونم اطلاعات اون سطر(یعنی همون سطر در gridview که روی لینکش کلیک شده) رو از دیتابیس نشون بدم.مشکلم این بود که چطور باید بفهمم که اطلاعات همون سطر رو نشون بدم؟؟؟
امیدوارم سئوالم رو درست گفته باشم!!
ممنون میشم کسی جوابم رو بده

behzadnet
یک شنبه 21 تیر 1388, 19:43 عصر
اول باید اطلاعات جدولت رو به این gridview بایند(bind كنی. بعد تو قسمت كد مربوط به اون linkbutton و یا hyperlink باید قسمت navigate url رو به شكل زیر تعریف كن

<asp:HyperLink ID="HyperLink1" Runat="server" NavigateUrl='<%# "~/default.aspx?id=" + Eval("id").tostring()%>' Text="مشاهده" ></asp:HyperLink>
تو این كد مشخصه id مربوط به سطر بوسیله Eval دریافت شده و به انتهای آدرس یك صفحه اضافه شده. بعد تو قسمت لود صفحه مورد نظر مثلا default.aspx میتونی این id رو بگیری و اطلاعات مناسب رو نمایش بدی.

ضمنا واسه دریافت id در صفحه مورد نظر هم از كد زیر استفاده كن

Dim myid As String = Request.QueryString("id")

arhnmn
یک شنبه 21 تیر 1388, 20:18 عصر
ممنونم دوست عزیز

arhnmn
یک شنبه 21 تیر 1388, 22:00 عصر
جناب behzadnet من این کارهایی که گفته بودین رو انجام دادم,ولی نمیدونم چطور باید به مثلا" یه label که اطلاعات اون سطری که کلیک شده رو مربوط کنم میشه لطف کنید با یه مثال بهم بگید؟؟یعنی اون id رو با یه label که اطلاعات دیتابیس رو نشون میده چطور بهم ربط بدم و کدش رو بنویسم؟؟

arhnmn
دوشنبه 22 تیر 1388, 01:33 صبح
دوستان کسی در این مورد یعنی یه gridview که یه ستون templateداشته باشه که اطلاعات درباره ی کلیک یکی از سطرهای gridview را برگردونه مثالی به vb داره؟؟؟
اگر این مثال رو تو این تایپیک بزارین ممنون میشم.خیلی کمکم میکنه

arhnmn
دوشنبه 22 تیر 1388, 12:57 عصر
کسی در این مورد مثالی نداره که این مشکل من حل بشه؟؟؟

mrhamidifar
دوشنبه 22 تیر 1388, 13:10 عصر
یه LinkButton بزار تویه template field بعد در پراپرتی CommandArguement همون LinkButton
آی دی ردیف گرید رو بزار :



CommandArgument='<%# Eval("product_id") %>'




بعد در ایونت کلیک لینک باتن :





LinkBottun lnkBtn=(LinkBottun) sender;


string ProductID = lnkBtn.CommandArgument.ToString();



حالا از querystring یا session یا هر چیز دیگه استفاده کن برای دیدن آی دی در صفحه بعد

arhnmn
دوشنبه 22 تیر 1388, 13:47 عصر
بعد در ایونت کلیک لینک باتن :





LinkBottun lnkBtn=(LinkBottun) sender;


string ProductID = lnkBtn.CommandArgument.ToString();




حالا از querystring یا session یا هر چیز دیگه استفاده کن برای دیدن آی دی در صفحه بعد


ببخشید من منظورتون رو از ایونت کلیک متوجه نشدم,یعنی منظورتون code behind کنترل linkbutton؟؟؟
بعد ببخشید همین طریقه ی استفاده روهم میگید که چطور با session بکار ببرمش. من یکم تازه کارم ببخشید

arhnmn
دوشنبه 22 تیر 1388, 16:41 عصر
این کدی که شما نوشتید Vb؟؟؟ من چیزی از قسمت آخرش نفهمیدم!
کسی نمیتونه کمکم کنه و این روش رو تا آخرش بهم بگه .من تا قسمت session پیش میرم ولی در ادامه نمیدونم چطور از دیتابیس استفاده کنم

masoomeh_c
دوشنبه 22 تیر 1388, 18:08 عصر
من تازه وارد هستم.دقیقا" منم می خواستم چنین کاری بکنم ولی بلد نبودم.خوشبختانه این تایپیک را دیدم.امیدوارم در این تایپیک به جواب برسیم

raziee
دوشنبه 22 تیر 1388, 18:56 عصر
این کدی که شما نوشتید Vb؟؟؟ من چیزی از قسمت آخرش نفهمیدم!

به زبان Csharp هست ولی تبدیلش که کاری نداره.
از قسمت آخرش چی نفهمیدی؟ این تبدیل به VB :


Dim ProID As String
ProID = LinkButton1.CommandArgument.ToString()

[QUOTE].من تا قسمت session پیش میرم ولی در ادامه نمیدونم چطور از دیتابیس استفاده کنم [/
QUOTE]
خوب یه کوئری بساز که درش شرطی باشه که مقدار اون شرط برابر با سشن باشه.

arhnmn
دوشنبه 22 تیر 1388, 19:12 عصر
مرسی razieeجان. خوب من همین کوئری نوشتن رو نمیتونم دیگه,یعنی الان یه چیزی نوشتم که مطمئنم که اشتباه چون erroمیده



Server Error in '/project' Application.
--------------------------------------------------------------------------------
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /project/ ~/taeedeagahi.aspx




اگر همین کد رو بهم بگید ممنون میشم

arhnmn
دوشنبه 22 تیر 1388, 19:21 عصر
ببینید کدی که من نوشتم این هستش(البته همشون کمک دوستان بوده که ازشون ممنونم)



NavigateUrl='<%# "~/default.aspx?id=" + Eval("id").tostring()%>'




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


Dim myid AsString = Request.QueryString("id")
'Label4.Text = Session("id")
SqlConnection1.Open()
SqlCommand1.CommandText = "select * from darjeagahi where agahiid='" + Session("id") + "'"
a = SqlCommand1.ExecuteReader
DataList1.DataSource = a
DataList1.DataBind()
SqlConnection1.Close()



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

raziee
دوشنبه 22 تیر 1388, 19:23 عصر
Server Error in '/project' Application.
--------------------------------------------------------------------------------
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /project/ ~/taeedeagahi.aspx
تا اونجایی که من اطلاع دارم خطا با کد 404 مربوط به پیدا نکردن صفحه درخواستی در سرور هست.
حدس میزنم آدرس صفحه رو اشتباه دای.
در چه زمان این خطا رخ میده؟
وقتی روی لینک کلیک میکنی؟

arhnmn
دوشنبه 22 تیر 1388, 19:27 عصر
بله وقتی رو linkbutton کلیک میکنم.حالا شما لطفا" به کدی که گذاشتم نگاه بندازین احتمالا" اونجا هم اشکال باشه و هم اینکه چطور بقیه اطلاعات رو از table دیگه ایی بیارم که اینم نمیدونم

arhnmn
سه شنبه 23 تیر 1388, 14:19 عصر
دوستان و اساتید عزیز لطفا" نگاهی به این کد من بندازید تا اشکالش رفع بشه
ممنون میشم جواب بدین

raziee
سه شنبه 23 تیر 1388, 15:09 عصر
براتون یه نمونه نوشتم.
کد هام رو ببین شاید کمکت کرد:33240

arhnmn
سه شنبه 23 تیر 1388, 15:47 عصر
مرسی عزیز.ولی شرمنده این کدها #c که من بلد نیستم و اصلا" کار نکردم.ببینید من مشکلم این که وقتی اون id رو گرفتم چطور ازش استفاده کنم یعنی مربوط به کدنویسی اونم به زبان vbمیشه. البته من جسارت نمیکنم شما همه استاد هستید و من تازه کارم حتما" اینارو خودتون میدونید

behzadnet
سه شنبه 23 تیر 1388, 18:52 عصر
ببینید کدی که من نوشتم این هستش(البته همشون کمک دوستان بوده که ازشون ممنونم)



NavigateUrl='<%# "~/default.aspx?id=" + Eval("id").tostring()%>'




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


Dim myid AsString = Request.QueryString("id")
'Label4.Text = Session("id")
SqlConnection1.Open()
SqlCommand1.CommandText = "select * from darjeagahi where agahiid='" + Session("id") + "'"
a = SqlCommand1.ExecuteReader
DataList1.DataSource = a
DataList1.DataBind()
SqlConnection1.Close()



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

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



تو دستور select جریان اون session چیه؟
شما تا اینجا id مربوط به سطری كه لازم داشتی رو گرفتی. بقیه كار كه راحته به جای اون خط دستور select رو به شكل زیر تعریف كن

SqlCommand1.CommandText = "select * from darjeagahi where agahiid='" + myid + "'"

raziee
سه شنبه 23 تیر 1388, 22:27 عصر
کد ها رو به VB این جوری میشه:
برای فرستادن به صفحه دوم:


Response.Redirect("YourPage.aspx?ID=" + ID)


برای خوندن از بانک و ...


Dim T_SQL As String
Dim myConn As New SqlConnection(strConnectionString)
Dim myComm = New SqlCommand(T_SQL, myConn)
T_SQL = "SELECT tblProfile.* FROM tblProfile WHERE (UserID = @UserID)"
myComm.Parameters.AddWithValue("UserID", ID)
Dim myDR As SqlDataReader
myConn.Open()
myDR = myComm.ExecuteReader()
If (myDR.Read()) Then
lblName.Text = myDR.GetValue(1).ToString()
lblFamily.Text = myDR.GetValue(2).ToString()
lblTell.Text = myDR.GetValue(3).ToString()
lblMobile.Text = myDR.GetValue(4).ToString()
lblComment.Text = myDR.GetValue(5).ToString()
End If
myConn.Close()

arhnmn
چهارشنبه 24 تیر 1388, 19:10 عصر
تو دستور select جریان اون session چیه؟
شما تا اینجا id مربوط به سطری كه لازم داشتی رو گرفتی. بقیه كار كه راحته به جای اون خط دستور select رو به شكل زیر تعریف كن

SqlCommand1.CommandText = "select * from darjeagahi where agahiid='" + myid + "'"

آقای بهزاد میشه یکم توضیح بدید.من از این قضیه id سر در نمیارم.اون قسمت sessionرو هم برداشتم و قسمت که شما گفتید رو گذاشتم ولی این errorرو میده:



DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'id'.


ببینید اگر یکم توضیح بدید که این id چیه؟ یه اسمی که مثل session خودمون در نظر میگیریم پس این error چیه؟؟؟


<asp:HyperLinkID="HyperLink1"Runat="server"NavigateUrl='<%# "~/taknamayesheagahi.aspx?id=" + Eval("id").tostring() %>'Text="ê¬ںى§ى ںیë ™گىی"Font-Underline="False"ForeColor="Orange"></asp:HyperLink>



این برای قسمت hyperlink که error میده که قسمت بالا گذاشتم


Dim myid AsString = Request.QueryString("id")
SqlConnection1.Open()
SqlCommand1.CommandText = "select * from darjeagahi where agahiid='" + ID + "'"
a = SqlCommand1.ExecuteReader
DataList1.DataSource = a
DataList1.DataBind()
SqlConnection1.Close()

این کدی که در قسمت pageload صفحه ایی که میخوام با کلیک روی hyperlink به اونجا هدایت بشه که اسمش taknamayesheagahi.aspx هستش که در قسمت
NavigateUrl من اضافه کردم که نمیدونم درست یا نه؟؟؟

اینم اون قسمت که تصحیح شده.اگه میشه یکم توضیح میدین که کل قضیه رو بفهمم چیه!!

arhnmn
پنج شنبه 25 تیر 1388, 02:55 صبح
کد ها رو به VB این جوری میشه:
برای فرستادن به صفحه دوم:


Response.Redirect("YourPage.aspx?ID=" + ID)


برای خوندن از بانک و ...


Dim T_SQL AsString
Dim myConn AsNew SqlConnection(strConnectionString)
Dim myComm = New SqlCommand(T_SQL, myConn)
T_SQL = "SELECT tblProfile.* FROM tblProfile WHERE (UserID = @UserID)"
myComm.Parameters.AddWithValue("UserID", ID)
Dim myDR As SqlDataReader
myConn.Open()
myDR = myComm.ExecuteReader()
If (myDR.Read()) Then
lblName.Text = myDR.GetValue(1).ToString()
lblFamily.Text = myDR.GetValue(2).ToString()
lblTell.Text = myDR.GetValue(3).ToString()
lblMobile.Text = myDR.GetValue(4).ToString()
lblComment.Text = myDR.GetValue(5).ToString()
EndIf
myConn.Close()


خانوم راضیه میشه لطف کنی یکم توضیح بدید.من خیلی گیج شدم اصلا" نمیدونم باید چیکار کنم.
ببینید من در کد linkbutton این کد رو نوشتم:



Protected Sub LinkButton6_Click1(ByVal sender As Object, ByVal e As System.EventArgs)
Dim agahititr As String
agahititr = LinkButton6.CommandArgument.ToString()
Response.Redirect("taknamayesheagahi.aspx? agahiid=" + agahititr)
End Sub




که errorمیده که اسم linkbutton6 تعریف نشده .من تو مثالی که شما فرستاده بودی نگاه کردم هرچند از #c سر در نمیارم ولی اینطور فهمیدم که چون داخل gridview هستش تعریف نشدست یعنی در واقع تو #c به این شکل بود:



protected void lbtnVisit_Click(object sender, EventArgs e)
{
string ProfileID = ((LinkButton)GridView1.FindControl("lbtnVisit")).CommandArgument.ToString();
Response.Redirect("View.aspx?" + ProfileID);
}




این رو نمیتونم به vb تبدیلش کنم که linkbutton6 عضوی از gridview هستش.
در ضمن من تو اون صفحه جدید این کد رو نوشتم:



Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim myid As String = Request.QueryString("agahititr")
SqlConnection1.Open()
SqlCommand2 = New SqlCommand(" select * from darjeagahi where agahititr = '" + "agahititr" + " ' ")
SqlCommand2.Parameters.AddWithValue("agahititr", ID)
SqlCommand2.Connection = SqlConnection1
SqlCommand2.CommandType = CommandType.Text
Dim a As SqlDataReader
a = SqlCommand2.ExecuteReader
If (a.Read) Then
Label1.Text = a.GetValue(1).ToString

End If
SqlConnection1.Close()
End Sub



که وقتی رو لینک کلیک میشه به این صفحه هدایت میشه ولی در صفحه جدید چیزی نشون داده نمیشه!!!
خواهش میکنم اگر میتونید راهنمائیم کنید.چند روز بیشتر برای پروژم وقت نمونده

arhnmn
پنج شنبه 25 تیر 1388, 13:16 عصر
دوستان کسی در این زمینه نمیتونه کمکم کنه؟؟من چند روز دیگه باید پروژم رو تحویل بدم واین یکی از مهم ترین قسمتهای پروژم هستش.
اگر تو این زمینه مثالی به Vbدارین خیلی به من کمک میکنه.

arhnmn
پنج شنبه 25 تیر 1388, 17:32 عصر
لطفا" به این تایپیک نگاهی بندازید ممنون میشم.
واقعا" احتیاج دارم

rojan2008
پنج شنبه 25 تیر 1388, 20:04 عصر
دوست عزيز به اين كد نگاه كنبراي اون قسمتي كه گفتي به زبان C#. اميدوارم كمكت كنه.



Dim myhp AsString = CType(gv0.FindControl("hp"), HyperLink).Text.ToString
Response.Redirect("doc.aspx?id='" & myhp & "'")

raziee
پنج شنبه 25 تیر 1388, 22:15 عصر
خانوم راضیه میشه لطف کنی یکم توضیح بدید.
البته بنده رضیئی هستم."حسین رضیئی" نه راضیه.
در مورد :

فهمیدم که چون داخل gridview هستش تعریف نشدست
دوستمون کد رو دادند.
به VB: پست شماره 25نگاه کن

arhnmn
پنج شنبه 25 تیر 1388, 23:47 عصر
شرمنده آقای رضیئی .ببخشید این اشتباه منو که از کم دقتی بوده .شرمندم.
راستش برای پروژم وقتم تقریبا" تموم شده منم هنوز یکم کار دارم اصلا" همه ی کارام شده با استرس و عجله ایی.
بازم عذر میخوام و شرمندم.ببخشید منو

arhnmn
جمعه 26 تیر 1388, 02:10 صبح
بازم این مشکل حل نشد.
وقتی اجرا میشه تو این خط errorمیده



Dim agahititr As String = CType(GridView1.FindControl("LinkButton6"), LinkButton).Text.ToString


که ارورش هم اینه:



Object reference not set to an instance of an object.
use the "new" keyword to create an object instance.


اگر میشه این مشکل رو بهم بگید که از چیه؟

meysam.jalali
شنبه 23 مرداد 1389, 00:15 صبح
جناب مهندس سلم اگه وقت کردید به سوا ما جواب بدید یا یه صفحه برای حل مشکل ما به ما نشو بدید من نیاز به یگ گرید ویو دارمک به یک لین باتن در هر سطر توجه کنید لینک باتن نه هایبر لینک البته نوشتم ششون اتما هنگامی گه گرید ویو را صفحه دوم میزنم ارور میده ارور اوت اف رنج

در صفحه ersal .aspx
کد من به این صورت است
LinkButton m = (LinkButton)sender;
int i = Int32.Parse(m.CommandArgument);
Label Label_ID = (Label)GridView1.Rows[i].Cells[4].FindControl("Label_ID");


Response.Redirect("~/daryaft.aspx?ID=" + Label_ID.Text);

و کد صفحه daryaft.aspx
Label Label_ID = (Label)FormView_Show.FindControl("Label_ID");