PDA

View Full Version : فعال کردن یک خبر در گراید



Amin12345
دوشنبه 03 خرداد 1389, 12:22 عصر
با سلام
من در قسمت مدیریت خبر ها یک گراید دارم که به خبر های صفحه اصلی ارتباط داره و می خوام یک خبر فعال و یا غیر فعال بشه و توی دیتا بیس بروز آوری بشه و آیکن اون هم با کلیک من عوض بشه یعنی کاربر اونو ببینه.http://pic0.picsorlinks.com/ph_or_19808_3ad7dec.jpg

maxpayn2
دوشنبه 03 خرداد 1389, 12:28 عصر
خاصیت edit رو برای گرید ( گراید غلطه ) فعال کن و براش editcommand بنویس

hamedsabzian
دوشنبه 03 خرداد 1389, 13:10 عصر
با سلام
من در قسمت مدیریت خبر ها یک گراید دارم که به خبر های صفحه اصلی ارتباط داره و می خوام یک خبر فعال و یا غیر فعال بشه و توی دیتا بیس بروز آوری بشه و آیکن اون هم با کلیک من عوض بشه یعنی کاربر اونو ببینه.http://pic0.picsorlinks.com/ph_or_19808_3ad7dec.jpg

اگه منظورت اینه که داخل هر سطر LinkButton هایی داشته باشیم که با کلیک روی هر کدوم عمل خاصی روی رکورد اون سطر انجام بشه،
من از این راه استفاده کردم:
به ازای هر کدوم از LinkButton ها که قراره بزاری، یه TemplateFilde بزار که مقدار CommandName اون برابر "Select" و مقدار CommandArgument اون برابر یه رشته که مشخص می کنه این LinkButton برای چه منظوری کلیک شده مثلا "Active"، حالا توی رویداد RowCommand گرید میری و e.CommandArgument رو برمیداری و یه جایی ذخیره می کنی مثلا می تونی توی یه فیلد از GridView1.Attribut. حالا توی رویداد SelectIndexChanged گرید میری و با توجه به اون مقدار توی فیلد Attribut که مشخص کننده کاری هستش که باید انجام بدی و اینکه GridView1.SelectedRow رو در اختیار داری می تونی عمل مورد نظرت رو روی رکورد انجام بدی و در آخر همگرید رو DataBind کنی!
برای نمایش Icon هم میتونی دوتا Icon فعال و غیر فعال رو کنار هم بزاری بعد اون فیلد Bool داخل جدول که مشخص می کنه که این رکورد فعاله یا نه رو به خاصیت Visible اون دوتا عکس Bind کنی!
اگه منظورت چیز دیگه ای هست بیشتر توضیح بده!
روشی که گفتم برای وقتیه که اطلاعات مختلفی رو می خوایم توی جدول های مختلف تغییر بدیم و گر نه اگه فقت یه فیلد توی همین جدول Bind شده باشه بهترین روش همون چیزیه که maxpayn2 گفت.

Amin12345
دوشنبه 03 خرداد 1389, 13:10 عصر
خاصیت edit رو برای گرید ( گراید غلطه ) فعال کن و براش editcommand بنویس

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

Amin12345
دوشنبه 03 خرداد 1389, 15:01 عصر
اگه منظورت اینه که داخل هر سطر LinkButton هایی داشته باشیم که با کلیک روی هر کدوم عمل خاصی روی رکورد اون سطر انجام بشه،
من از این راه استفاده کردم:
به ازای هر کدوم از LinkButton ها که قراره بزاری، یه TemplateFilde بزار که مقدار CommandName اون برابر "Select" و مقدار CommandArgument اون برابر یه رشته که مشخص می کنه این LinkButton برای چه منظوری کلیک شده مثلا "Active"، حالا توی رویداد RowCommand گرید میری و e.CommandArgument رو برمیداری و یه جایی ذخیره می کنی مثلا می تونی توی یه فیلد از GridView1.Attribut. حالا توی رویداد SelectIndexChanged گرید میری و با توجه به اون مقدار توی فیلد Attribut که مشخص کننده کاری هستش که باید انجام بدی و اینکه GridView1.SelectedRow رو در اختیار داری می تونی عمل مورد نظرت رو روی رکورد انجام بدی و در آخر همگرید رو DataBind کنی!
برای نمایش Icon هم میتونی دوتا Icon فعال و غیر فعال رو کنار هم بزاری بعد اون فیلد Bool داخل جدول که مشخص می کنه که این رکورد فعاله یا نه رو به خاصیت Visible اون دوتا عکس Bind کنی!
اگه منظورت چیز دیگه ای هست بیشتر توضیح بده!
روشی که گفتم برای وقتیه که اطلاعات مختلفی رو می خوایم توی جدول های مختلف تغییر بدیم و گر نه اگه فقت یه فیلد توی همین جدول Bind شده باشه بهترین روش همون چیزیه که maxpayn2 گفت.

با تشکر از راهنمایی دوستان
من با استفاده از ButtonField میتونم نمایش و عدم نمایش رو به صورت متن بزارم و لی من میخوام به جای متن آیکن باشه و هر کاری کردم نشد و از طرفی TemplateFilde هم که خاصیت CommandName نداره لطفا بیشتر منو راهنمایی کنید .http://pic0.picsorlinks.com/ph_or_19815_01f8dc5.jpg
ممنون

Vahid_moghaddam
دوشنبه 03 خرداد 1389, 15:12 عصر
می تونید از جاوااسکریپت و ajax استفاده کنید. در ستون فعال یه image بذارید که رویداد onclick اون چیزی شبیه به اینه:

onclick=EditNews(12);

که 12 یعنی news id.
یه تابع جاوا اسکریپت بنویسید با نام EditNews که id خبر رو می گیره (مثلا 12 در مثال بالا). این تابع یه درخواست می فرسته به سرور تا خبر مشخص شده رو فعال یا غیر فعال کنه. بنابر پاسخی که از سمت سرور میاد، آدرس عکس مربوط به خبر تغییر می کنه

hamedsabzian
دوشنبه 03 خرداد 1389, 21:38 عصر
با تشکر از راهنمایی دوستان
من با استفاده از ButtonField میتونم نمایش و عدم نمایش رو به صورت متن بزارم و لی من میخوام به جای متن آیکن باشه و هر کاری کردم نشد و از طرفی TemplateFilde هم که خاصیت CommandName نداره لطفا بیشتر منو راهنمایی کنید .
ممنون




<asp:GridView runat="server" ID="GridView1" AutoGenerateColumns="False"
DataSourceID="DSPInfo" Width="100%"
DataKeyNames="Name" onrowcommand="GridView1_RowCommand"
onselectedindexchanged="GridView1_SelectedIndexChanged"
onrowdatabound="GridView1_RowDataBound">
<Columns>
<asp:BoundField DataField="PrisonName" HeaderText="خبر" />
<asp:TemplateField HeaderText="فعال">
<ItemTemplate>
<asp:Image runat="server" ID="IA" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton runat="server" ID="LBA" CommandName="Select" CommandArgument="Active" Text="فعال"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton runat="server" ID="LBUA" CommandName="Select" CommandArgument="UnActive" Text="غیر فعال"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle HorizontalAlign="Right" />
<EmptyDataTemplate>
<div style="color: Green; text-align: center; border-style: solid; border-width: 1px;
border-color: Blue; background-color: #E2DED6;">
اطلاعاتی برای نمایش وجود ندارد</div>
</EmptyDataTemplate>

</asp:GridView>




protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (GridView1.Attributes["Command"])
{
case "Active":
//your code
break;
case "UnActive":
//your code
break;
}
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Select")
{
GridView1.Attributes["Command"] = (string)e.CommandArgument;
}
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if ((e.Row.RowState == DataControlRowState.Alternate || e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Selected)
&& e.Row.RowType == DataControlRowType.DataRow && e.Row.RowType != DataControlRowType.EmptyDataRow)
{

DataRowView drv = (DataRowView)e.Row.DataItem;
string str = (string)drv.Row["Active"];
if (str == "نمایش")
((Image)e.Row.Cells[1].FindControl("IA")).ImageUrl = "~/Active.png";
else if (str == "عدم نمایش")
((Image)e.Row.Cells[1].FindControl("IA")).ImageUrl = "~/UnActive.png";
}
}