PDA

View Full Version : مبتدی: حذف از طریق commandName به چه صورته؟



zhr.rezae66i
چهارشنبه 02 اسفند 1391, 14:34 عصر
سلام
میشه یه نمونه از کدهاتون که حذف با commandName برام بزارید
آخه من با CommandName که میرم
به محض کلیک روی دکمه ای که CommandName اش =delete میکنم
ارور میده که
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

اما با commandName=Insert عمل درج انجام میشه ولی برا این ایراد میگیره
حتی اگه داخل بلاکش خالی ام که باشه این ارور رو میده

مثلا اینم اررور میده


اما اگه CommandName="delete" رو از کنترل دکمه ام بردارم دیده مشکلی نداره
اونوقت باید از طریق رخداد خود دکمه حذف کنم
مشکل چیه
میشه راهنمایی کنید

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "insert")
{
string organName = string.Empty;
string ParentPieceName = string.Empty;
string ChildPieceName = string.Empty;
int PieceNo = 0;

GridViewRow rowFooter = GridView1.FooterRow;
organName = ((DropDownList)rowFooter.FindControl("DropDownOrga nFooter")).SelectedItem.Text;
ParentPieceName = ((DropDownList)rowFooter.FindControl("DropDownPice cFooter")).SelectedItem.Text;
ChildPieceName = ((DropDownList)rowFooter.FindControl("DropDownMode lPieceFooter")).SelectedItem.Text;
PieceNo = Convert.ToInt32(((TextBox)rowFooter.FindControl("T xtOrderNoFooter")).Text);

SqlConnection sc = new SqlConnection("Data Source=.;Initial Catalog=GridView_DB;Integrated Security=True");
SqlCommand cmd = new SqlCommand("insert into tblOrders (strOrganName,strPieceName,strSubPieceName,intPiec eID) values('" + organName + "','" + ParentPieceName + "','" + ChildPieceName + "'," + PieceNo + ");", sc);
sc.Open();
cmd.ExecuteNonQuery();
sc.Close();
LoadData();

}
else if (e.CommandName == "Delete")
{
Response.Write("tyy");

}
}

saeed31641
چهارشنبه 02 اسفند 1391, 15:00 عصر
دوست عزیز برای وصل شده به بانک از کلاس استفاده کن که هی از کانکشن استفاده نکنی یعنی حذف و اضافه و... تو کلاس استفاده کن که کد تکراری ننویسی
این برای حذف

if (e.CommandName == "RemovePlace")(
if (TempPlace.PlaceDelete(IdPlaceName))
{
// حذف با موفقیت انجام شد




}
{




public bool PlaceDelete(int idPlaceRempve)
{
try
{
if (Conn.State == ConnectionState.Closed)
Conn.Open();
Cmd = new SqlCommand();
Cmd.Parameters.Clear();
Cmd.Connection = Conn;
Cmd.Parameters.AddWithValue("@FPlaceID", idPlaceRempve);
Cmd.CommandText = "Delete from TPlace where FPlaceID=@FPlaceID";
Cmd.ExecuteNonQuery();
Conn.Close();
// Conn.Dispose();
return true;
}
catch
{

}
finally
{

if (Conn.State != ConnectionState.Closed)
{
Conn.Close();
// Conn.Dispose();
}

}
return false;
}

zhr.rezae66i
چهارشنبه 02 اسفند 1391, 15:27 عصر
میدونم
میخام ی توضیحی راجه به حذف از طریق رخداد CommandNAme بم بدید
میخام دکه بزارم داخل گیرید بگم CommandName=Delete
بعد در رخداد RowCommand گیرید بگم اگه CommandName=Delete این کارارو بکن اما
eroor زیر رو میده

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

چرا؟

انگار کلن با صدا زدن رخداد RowCommand مشکل داره

zhr.rezae66i
چهارشنبه 02 اسفند 1391, 16:23 عصر
ببینید

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "insert")
{
//هرچی

}
else if (e.CommandName == "Delete")
{
Response.Write("rrr");
}

}


برا اینسرت ایراد نمیگیره اما برا دیلیت خطا میده

تفاوت دکمه های edit و delete اینه که اولیو در رخداد RowCreated ایجاد کردم. بصورت داینامیک خودش با ایجاد هرسطر ایجاد میشه
اما دومیو در دیزاین قرار دادم استاتیک!

bftarane
چهارشنبه 02 اسفند 1391, 17:24 عصر
<asp:LinkButton ID="lbtn_del" runat="server" CommandName="remove" CommandArgument='<%#Eval("Username") %>' OnClientClick="return confirm('آیا از حذف این کاربر اطمینان دارید؟');">حذف</asp:LinkButton>

.....................................
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)

{
switch (e.CommandName)
{

case "ManageRoles":
يه سري کد
break;
case "remove":
string Username = e.CommandArgument.ToString();

MyDALBase.ExecuteNoneQuery(System.Data.CommandType .StoredProcedure, "DeleteUser", new SqlParameter[]{
new SqlParameter("@Username",Username)
});

break;
case "change":
يه سري کد
break;
default:
break;
}

}
تا جايي که يادمه در سايت how2learnasp.net خونده بودم که commandname نبايد مثلاً delete، Insert و Update باشه اسمش مثلاً به جاي delete آدم مي تونه بنويسه remove به جاي Update بنويسه change
در ضمن اونجا که Dalbase نوشتم شما مدل کدنويسي خودتون کدهاي حذف رو بنويسيد چون من از يه کلاس استفاده مي کنم و يه مقدار متفاوته روش کدنويسيم.

اگه بازم جواب نگرفتين اطلاع بدين يه نمونه بزارم.

zhr.rezae66i
چهارشنبه 02 اسفند 1391, 17:30 عصر
وای ممنونم بله مشکل از اسم delete بود :-*