PDA

View Full Version : سوال: معادل دستور selectrow در گرید ویو چیه ؟



meysamdalipour
شنبه 28 مرداد 1391, 01:44 صبح
سلام من می خوام داخل یک گریدویو با یک دکمه ای عمل حذف رو انجام بده . ابتدا مقادیر گریدویو را با داده پر کردم . سپس یک دکمه با asp:imagebuttonگذاشتم . کد حذف رو هم نوشتم اما وقتی کلیک می کنم به کد رکورد مورد نظر احتیاج دارم تا اونو به پروسیجر delete بفرستم .
ما در select اگر می خواستیم کدی را بگیریم از دستور زیر استفاده می کردیم و شماره رکورد مورد نظر ر ومی گرفتیم و ارسال می کردیم .

gridview1.selectedrow.cell[1].text

اما asp:imagebutton یک رویداد حذف رو قراره انجام بده و من باید شماره رکورد مورد نظر رو بگیرم اما نمی دونم کدش چیه ؟ کسی هست که کمک کنه؟

h_r_sh
شنبه 28 مرداد 1391, 02:12 صبح
<asp:GridView runat="server" ID="gvCats" AutoGenerateColumns="false"
ShowFooter="false" ShowHeader="false" SkinID="GridProf3"
onrowcommand="gvCats_RowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<table class="fullwidth">
<tr>
<td>
<asp:HyperLink runat="server" ID="lnkGo" Text='<%# Eval("Title") %>'
NavigateUrl='<%# "AddEditCategory.aspx?ItemID=" + Eval("CategoryID") %>' />
<div class="subTitle">
<%# Eval("Description") %>
</div>
</td>
<td style="text-align: left;">
<asp:ImageButton runat="server" ID="btnDelete" CommandArgument='<%# Eval("CategoryID") %>' CommandName="DeleteCat"
OnClientClick="if (confirm('Are you sure you want to delete this item?') == false) return false;"
ImageUrl="~/App_Themes/DefaultStyle/images/Delete.gif" />
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

و در CodeBehind:

protected void gvCats_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e)
{
if (e.CommandName == "DeleteCat")
this.DeleteCategory(int.Parse(e.CommandArgument.To String()));
}

تابع DeleteCategory() کارهای مربوط به حذف رو انجام می ده.

meysamdalipour
شنبه 28 مرداد 1391, 02:41 صبح
سلام
من متوجه این کد نمی شوم . در سوال قبلی که مطرح کردم شما زحمت کشیدید و جواب دادید . اما تنها مشکل من اینه که وقتی asp:imagebutton رو میزنم ،gridview1.selectrow.cell[1].text که کد منو باید بده ، نمیده . البته یه دستور دیگه هم گرفتم gridveiw1.row[1].cell[1].text که یه عیب داره و فقط کد مربوطه برای سطر اول رو می ده یعنی من اگه row[10] بکنم ، کد سطر دهم رو می ده و من نمی دونم چی قرار بدم که با کلیک اون به جای row[10] بیاد و هر سطری که کلیک شده رو بده . اگه مثلاسطر سه رو کلیک کردم row[3] رو بده و یا هر چیز دیگه .

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

h_r_sh
شنبه 28 مرداد 1391, 02:45 صبح
برادر، اون کد، در کنار هر ردیف از gridView یک دکمه قرار می ده. شما روی هر کدام از دکمه ها که کلیک کنی، اطلاعات مربوط به همون سطر حذف می شه.
شما یکبار gridView رو با این شکل تکمیل کنید، ببینید نتیجه چطور میشه. اگر پرسشی بود، بلد بودم در خدمتم.
من gridView رو با Entity Framework پر می کنم. البته هیچ فرقی نداره.

برای پر کردن:

public Category GetCategoryByID(int categoryID)
{
using (MyModel am = this.conn.GetContext())
{
Category cat = (from c in am.Category
where c.CategoryID == categoryID
select c).FirstOrDefault();
return cat;
}
}

برای حذف کردن

public void DeleteCategory(int categoryID)
{
using (MyModel am = this.conn.GetContext())
{
Category cat = (from c in am.Category
where c.CategoryID == categoryID
select c).FirstOrDefault();
am.Category.DeleteObject(cat);
am.SaveChanges();
}
}