ورود

View Full Version : تغییر لیبل در ItemTemplate



rezaomigo
پنج شنبه 24 فروردین 1391, 17:49 عصر
در صفحه خود یک gridview دارم که یک label در itemtemplate وجود داره حالا می خواهم وقتی روی یک دکمه از ردیف جدول کلیک میکنم همون لیبل ردیف من یکی بهش اضافه مپبشود...
این کار را چطوری انجام دهم...
ممنون:لبخندساده:

bahareh1368
پنج شنبه 24 فروردین 1391, 22:38 عصر
در صفحه خود یک gridview دارم که یک label در itemtemplate وجود داره حالا می خواهم وقتی روی یک دکمه از ردیف جدول کلیک میکنم همون لیبل ردیف من یکی بهش اضافه مپبشود...
این کار را چطوری انجام دهم...
ممنون:لبخندساده:

با سلام. برای این کار میتونی در همون رویداد RowCommand گرید اول یه نمونه از کلاس lable بسازی و runtime یکی ازش بسازی و همونجا پراپرتی هاشو ست کنی.

rezaomigo
پنج شنبه 24 فروردین 1391, 22:55 عصر
من اینطوری متوجه نشدم...لطفا اگه میشه کدهاش را بنویسید....خیلی خیلی ممنون میشوم..........

fakhravari
جمعه 25 فروردین 1391, 09:09 صبح
یکی بهش اضافه بشه یعنی چی؟

ghbn1362
جمعه 25 فروردین 1391, 11:12 صبح
خوب روشی که دوست عزیزمان اشاره کردن روش خوبیه ولی مشکلی که داره باعث Post Back میشه بعد هم کنترل و کد نویسیش زیاده شما به راحتی می توانید با استفاده از جاوااسکریپت یا بهتر از آن JQuery لیبل ها را یافته مقدار داخلی آنها تغییر دهید یعتی با هر با کلیک یک عدد به آن اضافه یا کم نماید دیگر Post Back نخواهید داشت و تمام کار سمت کاربر به سرعت صورت خواهد گرفت نوشتن آن هم ساده تر است.

این هم یک مثال ساده البته کدش برای شما کاربرد ندارد ولی به شما راه را نشان خواهد داد
http://jsfiddle.net/rniemeyer/3Lqsx/

rezaomigo
جمعه 25 فروردین 1391, 17:17 عصر
با سلام ...
آقای fakhravari (http://barnamenevis.org/member.php?128926-fakhravari) منظورم اینکه مثلا مثل سایتهایی که برای نظرات موافق و مخالف گذاشته که اگه موافق باشی یکی به آن اضافه میکنه...
فکر کنم شما متوانید کد مورد نظر را پیدا کنید؟
حالا من این کار را می خواهم با asp.net و اضافه شدن عدد در لیبل مورد نظر در سطر کلیک شده

fakhravari
جمعه 25 فروردین 1391, 19:54 عصر
خوب ببنید این امتیاز دهی به پست میشه .
در حالت تمپلت مقدار id پست بگیرید و امتیاز بدین .
بستگی به خودتون داره 2 تا فیلد لازمه موافق و مخالف که بعد با یه select میتوانید برای هر رکورد محاسبه کنید.

rezaomigo
جمعه 25 فروردین 1391, 20:30 عصر
ممنون...مشکل من در تغییر لیبل هست...
من با کنترلهای anthem کار می کنم و وقتی روی دکمه ردیف مورد نظر کلیک می شود مشکل این است که تغییر یکی اضافه شدن در همان ردیف انجام نمیشه و در چند تا رکورد بالاتر یا پایین تر اعمال میشه و نمیتونه ردیف صحیح را پیدا کنه
If e.CommandName = "tedad" Then

'گرفتن شماره ردیف شماره آی دی
Dim a As Integer = Convert.ToInt32(e.CommandArgument)

'رفتن به محتویات لیبل در هر ستون کلیک شده

Dim a As String = e.CommandArgument
Dim row As GridViewRow = GridView1.Rows(a)
Dim lbl As Label = DirectCast(row.FindControl("label8"), Label)
msgbox(lbl.Text)

lbl.Text = Str(Val(lbl.Text) + 1)

'آپدیت کد و اضافه کردن یکی
Dim conObj As New SqlConnection(ConfigurationManager.ConnectionStrin gs("x").ConnectionString)
Dim commandText As String = "update bbaannkk set tick='" + lbl.Text + "' where Id=" & a
Dim cmdObj As New SqlCommand(commandText, conObj)
conObj.Open()
cmdObj.ExecuteNonQuery()
conObj.Close()
End If

fakhravari
جمعه 25 فروردین 1391, 21:02 عصر
private void BindGrid()
{
GridView1.DataSource = SqlHelper.ExecuteReader(@"Data Source=.\SQLEXPRESS;Initial Catalog=D:\A-VELAYAT\APP_DATA\ASPNETDB.MDF;Integrated Security=True", CommandType.Text, "SELECT TOP(5) * FROM F_Forums");
GridView1.DataBind();
}

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid();
}
}

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName.ToLower() == "showinfo")
{
foreach (GridViewRow row in GridView1.Rows) // Loop In All Grid Row To Find Clicked Row Labels
{
int currentRecordId = int.Parse(((HiddenField)row.FindControl("hflRowID")).Value); // Current GridRow
int pressedRecordId = int.Parse(e.CommandArgument.ToString()); // Clicked GridRow Data

if (currentRecordId == pressedRecordId) // Clicked Row Found !
{
Label label1 = (Label)row.FindControl("Label1"); // !
Label label2 = (Label)row.FindControl("Label2");
Label label3 = (Label)row.FindControl("Label3");


TextBox1.Text = label1.Text;
TextBox2.Text = label2.Text;
TextBox3.Text = label3.Text;

return; // Exit Loop
} // if
} // Foreach
}
}
using Microsoft.ApplicationBlocks.Data;
using System.Data;

dorparasti
جمعه 25 فروردین 1391, 21:11 عصر
ممنون...مشکل من در تغییر لیبل هست...
من با کنترلهای anthem کار می کنم و وقتی روی دکمه ردیف مورد نظر کلیک می شود مشکل این است که تغییر یکی اضافه شدن در همان ردیف انجام نمیشه و در چند تا رکورد بالاتر یا پایین تر اعمال میشه و نمیتونه ردیف صحیح را پیدا کنه


کد بسیار بدی نوشتید دوست عزیز . اما از این نکته که بگذریم :

برای دسترسی به ردیف کلیک شده نیازی به commandArgument نیست . علت اینکه موقع بروز کردن چند رکورد بالا و پایین رو بروز می کنه همینه . فک کنم در commandArgument مقدار ID هر رکورد رو قرار دادید ( بر اساس کد بالا ) . و از اون برای در آوردن ردیف کنونی gridview استفاده کردید در حالی که این دو با هم متفاوت هستند .

پارامتر e یک property بنام CommandSource داره که کنترلی رو که باعث روی دادن رویداد command شده رو نشون می ده . اگر از Button استفاده کردید به شکل زیر می تونید ردیف جاری رو بدست بیارید ( به سی شارپ است البته )


GridViewRow row = (GridViewRow)((Button)e.CommandSource).NamingConta iner


از طرفی برای افزودن یک مقدار به مقدار کنونی در دیتابیس نیازی به مقدار داخل Label ندارید و تنها به ID رکورد احتیاج دارید .


Dim commandText As String = "update bbaannkk set tick =(tick + 1) where Id=" & a


در ضمن از پارامتر برای ارسال مقدار به دیتابیس استفاده کنید .