PDA

View Full Version : سوال: حذف یک ردیف از Repeater با استفاده از hyperlink



crazy_1892
یک شنبه 27 آذر 1390, 21:26 عصر
سلام دوستان
با استفاده از Repeater اطلاعات یک جدولم را نمایش دادم یک ستون جدید برای حذف یک ردیف می خوام ایجاد کنم با استفاده از hyperlink که وقتی کاربر روش کلیک کرد بپرسه از حذف اصمینان دارید اگه yes زد حذف کنه ؟چی حوری باید این کارو کنم؟؟؟؟

A.S.Roma
یک شنبه 27 آذر 1390, 21:57 عصر
به جای Hyperlink باید از LinkButton استفاده کنید. پراپرتی OnClientClick رو مقدار بدید و از طریق javaScript باید صفحه ای که برای این کار طراحی کرده اید رو نمایش بدید و خاصیت returnValue شی window رو مقدار بدید.
onClientClick="return confirmBox();"

crazy_1892
یک شنبه 27 آذر 1390, 23:57 عصر
دوست عزیز قسمت نمایش پیام زیاد مهم نیست من می خوام وقتی روی لینک حذف کلیک کرد اون ردیف حذف شود

A.S.Roma
دوشنبه 28 آذر 1390, 10:05 صبح
من به طور کلی راه حل رو میگم

یک Attribute به LinkButton نسبت بدید که حاوی مقدار ID رکورد باشه.
یک HiddenField توی صفحه داشته باشید .

وقتی روی LinkButton کلیک میشه ID کنترل رو داخل HiddenField بریزید ( سمت کلاینت )
سمت سرور مقدار HiddenField میشه ID مورد نظر برای حذف

crazy_1892
دوشنبه 28 آذر 1390, 12:38 عصر
دوست عزیز من اصلا متوجه نشدم اگه لطف کنید یک مثال برام بذارید ممنون میشم

Mohamad1362
دوشنبه 28 آذر 1390, 13:24 عصر
داخل کنترل repeater یه button یا LinlButton یا ImagButton بذار ، خصوصیت CommandName اون رو برابر Delete قرار بده ، بعد داخل رویداد DeleteCommand کنترل Repeater این کد رو بذار :
Int id = (Int)Repeater1.DataKeys[e.Item.ItemIndex];
SqlDataSource1.DeleteParameters["ID"].DefaultValue = id.ToString();
SqlDataSource1.Delete();
البته باید داخل SqlDataSource1 خصوصیت DeleteCommand رو مقدار دهی کنی ، مثلا اینجوری :
Delete From Table1 Where ID=@ID

adineh67
دوشنبه 28 آذر 1390, 16:35 عصر
داخل کنترل repeater یه button یا LinlButton یا ImagButton بذار ، خصوصیت CommandName اون رو برابر Delete قرار بده ، بعد داخل رویداد DeleteCommand کنترل Repeater این کد رو بذار :
[
دوست عزیز ریپیتر این خاصیت رو نداره راه دیگه ای اگه هست بگین لطفا

Mohamad1362
دوشنبه 28 آذر 1390, 17:09 عصر
کدوم خاصیت ؟ از datalist استفاده کن به جای Repeater

adineh67
دوشنبه 28 آذر 1390, 18:02 عصر
عذر می خوام منظورم رویداد deletecommand هست این رویدادو ریپیتر نداره

fakhravari
دوشنبه 28 آذر 1390, 20:49 عصر
protected string Sqldelete = "DELETE FROM [t1] WHERE [id] = @id";
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
int ID = Int32.Parse(e.Item.ItemIndex.ToString());
try
{
SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrin gs["DatabaseConnectionString1"].ConnectionString);
con1.Open();
SqlCommand cmd1 = new SqlCommand(Sqldelete, con1);
cmd1.CommandType = CommandType.Text;
cmd1.Parameters.Add("@id", SqlDbType.Int).Value = ID;
cmd1.ExecuteNonQuery();
con1.Close();
Response.Write("<script>alert('فایل موردنظر بایگانی شد');</script>");
}

catch
{
Response.Write("<script>alert('error');</script>");
}

}
فقط int ID = Int32.Parse(e.Item.ItemIndex.ToString()); این تیکه تازه دارم تست میکنم اگر مقدار id پیدا کنیم درسته تابع

crazy_1892
سه شنبه 29 آذر 1390, 23:48 عصر
دوست عزیز این متد به چه شکلی باسد پیاده سازی شه؟
یکم بیشتر توضیح میدی؟؟

fakhravari
چهارشنبه 30 آذر 1390, 02:01 صبح
با سلام این کاملشه

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1"
onitemcommand="Repeater1_ItemCommand">
<ItemTemplate>
<asp:Button ID="Button1" CommandArgument='<%# Eval("fCodeProducts") %>' runat="server" Text="Button" />
<%# Eval("fCodeProducts")%>
</ItemTemplate>
</asp:Repeater>

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
string id = (e.CommandArgument).ToString();



SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrin gs["DBOnlineShopConnectionString1"].ConnectionString);
con1.Open();
SqlCommand cmd1 = new SqlCommand(Sqldelete, con1);
cmd1.CommandType = CommandType.Text;
cmd1.Parameters.Add("@fCodeProducts", SqlDbType.Int).Value = Int32.Parse(id);
cmd1.ExecuteNonQuery();
con1.Close();
lasteror = "اطلاعات حذف شد";
Response.Write(lasteror);
}

adineh67
پنج شنبه 01 دی 1390, 19:39 عصر
سلام
جناب فخرآوری من از این روش شما برای حذف یک ردیف از repeater بوسیله ی imgbtn استفاده کردم کدهاش به شکل زیر:

<asp:ImageButton ID="ImageButton1" ToolTip="حذف عکس" runat="server" CommandArgument='<%# Eval("imgid2") %>' ImageUrl="~/images/delete.png"/>


protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
Control cnrl = new Control();
int id = Convert.ToInt16("@imgid2");
cnrl.delpic(id);
}
ولی موقع اجرا با کلیک روی imgbtn فقط صفحه لود میشه و اتفاق دیگه ای نمیفته یعنی اصلا رویداد item-command اجرا نمیشه لطفا راهنمایی کنین ببینم مشکل از کجاست

fakhravari
جمعه 02 دی 1390, 17:30 عصر
int id = Convert.ToInt16(e.CommandArgument);

adineh67
جمعه 02 دی 1390, 17:44 عصر
سلام ممنون از پاسختون تغییرش دادم ولی بازم جواب نداد اصلا این رویدادو اجرا نمی کنه بریک پوینت که میذارم هیچ عکس العملی نشون نمیده:گریه:

fakhravari
شنبه 03 دی 1390, 12:10 عصر
یه سمل بسازید تا چک کنم

adineh67
شنبه 03 دی 1390, 12:22 عصر
سلام ممنون از لطفتون یکی از دوستان کمکم کردن و مشکلم حل شد مشکل اینجا بود که بایستی داده های توی pageload رو می ذاشتم تو قسمت (ispostback!)