PDA

View Full Version : حذف از GridView



maxpayn2
دوشنبه 25 تیر 1386, 14:20 عصر
سلام
من در یک پروژه ASP.Net که با C# مینویسم یک GridView دارم که کد اون به این صورت هستش



<asp:GridViewID="GridView1"runat="server"DataSourceID="SqlDataSource1"AllowPaging="true"AllowSorting="true"AutoGenerateColumns="false"OnRowUpdated="GridView1_RowUpdated"OnSelectedIndexChanged="GridView1_SelectedIndexChanged">

<Columns>

<asp:TemplateFieldHeaderText="è§ ê¥­یé">

<EditItemTemplate>

<asp:LabelID="lblUpdate"runat="server"Text='<%#Bind("product_id")%>'></asp:Label>

</EditItemTemplate>

<ItemTemplate>

<%#Eval("product_id")%>
</ItemTemplate>

<ItemStyleFont-Names="Tahoma"/>

<HeaderStyleFont-Names="Tahoma"/>

</asp:TemplateField>

<asp:TemplateFieldHeaderText="ëںê ꥭیé">

<ItemTemplate>

<%#Eval("product_name")%>
</ItemTemplate>

<ItemStyleFont-Names="Tahoma"/>

<HeaderStyleFont-Names="Tahoma"/>

</asp:TemplateField>

<asp:TemplateFieldHeaderText="çïê¢ یں¥§">

<ItemTemplate>

<%#Eval("unit_price")%>
</ItemTemplate>

<ItemStyleFont-Names="Tahoma"/>

<HeaderStyleFont-Names="Tahoma"/>

</asp:TemplateField>

<asp:TemplateFieldHeaderText="یھë یں¥§">

<ItemTemplate>

<%#Eval("unit_weight")%>
</ItemTemplate>

<ItemStyleFont-Names="Tahoma"/>

<HeaderStyleFont-Names="Tahoma"/>

</asp:TemplateField>

<asp:TemplateFieldHeaderText="¢م§ں§">

<EditItemTemplate>

<asp:TextBoxID="txtUpdate"runat="server"Text='<%#Bind("qty")%>'></asp:TextBox>

</EditItemTemplate>

<ItemTemplate>

<%#Eval("qty")%>
</ItemTemplate>

<ItemStyleFont-Names="Tahoma"/>

<HeaderStyleFont-Names="Tahoma"/>

</asp:TemplateField>

<asp:TemplateField>

<EditItemTemplate>

<asp:TextBoxID="txtDelete"runat="server"Text='<%#Bind("cart_id")%>'></asp:TextBox>

</EditItemTemplate>

<ItemTemplate>

</ItemTemplate>

<ItemStyleFont-Names="Tahoma"Width="0px"/>

<HeaderStyleFont-Names="Tahoma"/>

</asp:TemplateField>

<asp:CommandFieldShowEditButton="True"ButtonType="Button"UpdateText="£ ¢"CancelText="ںë­©ںه"

EditText="یی©ںی¬"HeaderText="یی©ںی¬"InsertVisible="true">

<FooterStyleHorizontalAlign="Center"Font-Names="Tahoma"/>

<HeaderStyleHorizontalAlign="Center"Font-Names="Tahoma"/>

<ItemStyleHorizontalAlign="Center"Font-Names="Tahoma"/>

</asp:CommandField>

<asp:CommandFieldShowDeleteButton="True"ButtonType="Button"DeleteText="¥¨ه"

HeaderText="¥¨ه"InsertVisible="true">

<FooterStyleHorizontalAlign="Center"Font-Names="Tahoma"/>

<HeaderStyleHorizontalAlign="Center"Font-Names="Tahoma"/>

<ItemStyleHorizontalAlign="Center"Font-Names="Tahoma"/>

</asp:CommandField>
</Columns>

<EmptyDataTemplate>

<table>

<tr>

<thstyle="font-family:Tahoma">&nbsp;è§ ê¥­یé&nbsp</th>

<thstyle="font-family:Tahoma">&nbsp;ëںê ꥭیé&nbsp</th>

<thstyle="font-family:Tahoma">&nbsp;çïê¢ یں¥§&nbsp</th>

<thstyle="font-family:Tahoma">&nbsp;یھë یں¥§&nbsp</th>

<thstyle="font-family:Tahoma">&nbsp;¢م§ں§&nbsp</th>

</tr>

<tr>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

</tr>

</table>

</EmptyDataTemplate>

</asp:GridView>

<asp:SqlDataSourceID="SqlDataSource1"runat="server"ConnectionString="<%$ ConnectionStrings:alvercoConnectionString %>"
UpdateCommand="UPDATE shoppingcart SET [qty] = @qty WHERE ([product_id] = @product_id)"

DeleteCommand="DELETE FROM shoppingcart WHERE [cart_id] = @cart_id AND [product_id] = @product_id"

>

<DeleteParameters>

<asp:ParameterName="cart_id"/>

<asp:ParameterName="product_id"/>

</DeleteParameters>

<UpdateParameters>

<asp:ParameterName="qty"/>

<asp:ParameterName="product_id"/>

</UpdateParameters>

</asp:SqlDataSource>


ولی وقتی روی دکمه حذف کلیک میکنم رکورد حذف نمیشه ، چی کار باید بکنم ؟

maxpayn2
دوشنبه 25 تیر 1386, 14:51 عصر
تو ر خدا یکی جواب بده ، دارم دیوونه میشم ،‌آخه همه چیش درسته

babi_wd
دوشنبه 25 تیر 1386, 16:34 عصر
دستی کد نوشتی؟
بله-شما رویداد حذف رو هندل نکردی
خیر-فقط براش امکان حذف رو فعال کن

maxpayn2
سه شنبه 26 تیر 1386, 08:49 صبح
میشه بیشتر توضیح بدین ؟ رویداد حذف رو هندل نکردی یعنی چی ؟ امکان حذف ( enable deleting) رو فعال کردم ولی بازم اینجوریه ، راستی کد رو هم دستی نوشتم

Nightbat
چهارشنبه 27 تیر 1386, 08:55 صبح
دلیل خاصی برای دستی نوشتن کد داری ؟ grid رو بنداز رو صفحه، وصلش کن به DataSource ، بعد Delete رو فعال کن، همه چیز کار می کنه! اگه لازمه که دستی بنویسی هم بگو چرا ؟

mp2009
دوشنبه 26 شهریور 1386, 22:03 عصر
راست میگه مشکل من هم همینه یکی کمک کنه دیگه

nazaninam
دوشنبه 26 شهریور 1386, 22:12 عصر
به کد هایی که نوشتید کمی دقت کنید :



WHERE [cart_id] = @cart_id AND [product_id] = @product_id"



در شرط حذف رکورد شما 2 تا متغیر به نام cart_id و product_id را پاس می کنید در حالی که در بین ستون های شما فقط product_id موجود هست !

می تونید از datakeys برای اینکار استفاده کنید

mp2009
دوشنبه 26 شهریور 1386, 22:18 عصر
مرسی از جواب میشه بیشتر توضیح بدید
ببینید مشکل من اینه:
من یه دونه گرید ویو دارم که کار نمایش اخبار را بر عهده دارد
من یه دونه Batton رو میخوام قرار بدم توی یه سطون که ازنوع تمپلت است
حالا میخواهم هرکی روی این دکمه کلیک کرد id همون سطر رو بهم بده تا توی یه دونه لیبل یا هرچی دیگه نشونش بدم
میشه همین العان جواب بدید؟
مرسی ار شما

nazaninam
دوشنبه 26 شهریور 1386, 23:31 عصر
من جواب شمارو ندادم جواب کسی که تاپیک رو باز کرده بودم دادم
اگه سوالی داری تاپیک بزن

mp2009
سه شنبه 27 شهریور 1386, 00:54 صبح
no problem

maxpayn2
سه شنبه 27 شهریور 1386, 07:06 صبح
سلام آقای/خانم mp2009 فکر کنم 2 ماه دیر این تاپیک رو دیدید ، من این تاپیک رو شروع کردم و از اونجایی که تازه کار بودم ( هنوز هم هستم ) وقتی کارم راه افتاد نتیجه رو اینجا ننوشتم ، اگه میخوای پیغام خصوصی بفرست تا نمونه کد رو برات بفرستم

mp2009
سه شنبه 27 شهریور 1386, 10:36 صبح
مرسی دوست عزیز اگه میشه برام بفرستید

باز هم ممنون

Arian_61
دوشنبه 28 مرداد 1387, 11:07 صبح
چرا این کارا رو می کنید خوب نتایج تون رو بنویسید تا بقیه هم اگه به این مشکل برخورد کردن بتونن ...
من یه سورس کامل واستون می زارم
البته واسه بعدی ها



<asp:GridView ID=”gv” runat=”server” OnRowEditing=”Editdata”
OnPageIndexChanging=”pageddata” OnRowDeleting=”Deletedata”
OnRowUpdating=”Updatedata” OnRowCancelingEdit=”Canceldata” AllowPaging=”True”
AutoGenerateColumns=False PageSize=”3″ CellPadding=”4″ ForeColor=”#333333″
GridLines=”None”>
<FooterStyle BackColor=”#507CD1″ Font-Bold=”True” ForeColor=”White” />
<RowStyle BackColor=”#EFF3FB” />
<Columns>
<asp:TemplateField HeaderText=”empId” >
<ItemTemplate>
<asp:Label ID=”lblid” runat=server Text=’<%#Eval(”empid”) %>’></asp:Label>
</ItemTemplate>
<EditItemTemplate >
<asp:TextBox ID=”txtid” runat =server Text=’<%#Eval(”empid”) %>’></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText=”empname” >
<ItemTemplate>
<asp:Label ID=”lblname” runat=server Text=’<%#Eval(”empname”) %>’></asp:Label>
</ItemTemplate>
<EditItemTemplate >
<asp:TextBox ID=”txtname” runat =server Text=’<%#Eval(”empname”) %>’></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText=”empcity” >
<ItemTemplate>
<asp:Label ID=”lblcity” runat=server Text=’<%#Eval(”empcity”) %>’></asp:Label>
</ItemTemplate>
<EditItemTemplate >
<asp:TextBox ID=”txtcity” runat =server Text=’<%#Eval(”empcity”) %>’></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText=”empsalary” >
<ItemTemplate>
<asp:Label ID=”lblsalary” runat=server Text=’<%#Eval(”empsalary”) %>’></asp:Label>
</ItemTemplate>
<EditItemTemplate >
<asp:TextBox ID=”txtsalary” runat =server Text=’<%#Eval(”empsalary”) %>’></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton=”True” />
<asp:CommandField ShowDeleteButton=”True” />
</Columns>
<PagerStyle BackColor=”#2461BF” ForeColor=”White” HorizontalAlign=”Center” />
<SelectedRowStyle BackColor=”#D1DDF1″ Font-Bold=”True” ForeColor=”#333333″ />
<HeaderStyle BackColor=”#507CD1″ Font-Bold=”True” ForeColor=”White” />
<EditRowStyle BackColor=”#2461BF” />
<AlternatingRowStyle BackColor=”White” />
</asp:GridView>
<br />
<br />
<div class=”border_table_userlogin” >
<asp:TextBox ID=”empId” runat=”server”></asp:TextBox><br />
<asp:TextBox ID=”empName” runat=”server”></asp:TextBox>
<br />
<asp:TextBox ID=”empcity” runat=”server”></asp:TextBox>
<br />
<asp:TextBox ID=”empsalary” runat=”server”></asp:TextBox>
<br />
<asp:Button ID=”btninsert” runat=”server” Text=”Insert”
onclick=”insert” />
</div>
codefile//////////

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
binddata();
}
}
void binddata()
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath(”empdata.xml”));
gv.DataSource = ds;
gv.DataBind();
}
protected void Editdata(object s, GridViewEditEventArgs e)
{
gv.EditIndex = e.NewEditIndex;
binddata();
}
protected void Deletedata(object s, GridViewDeleteEventArgs e)
{
binddata();
DataSet ds= gv.DataSource as DataSet;
ds.Tables[0].Rows[gv.Rows[e.RowIndex].DataItemIndex].Delete();
ds.WriteXml(Server.MapPath(”empdata.xml”));
binddata ();
}
protected void Canceldata(object s, GridViewCancelEditEventArgs e)
{
gv.EditIndex = -1;
binddata();
}
protected void Updatedata(object s, GridViewUpdateEventArgs e)
{
int i = e.RowIndex;
string id=(gv.Rows[e.RowIndex].FindControl(”txtid”) as TextBox).Text;
string name=(gv.Rows[e.RowIndex].FindControl(”txtname”) as TextBox).Text;
string city=(gv.Rows[e.RowIndex].FindControl(”txtcity”) as TextBox).Text;
string salary=(gv.Rows[e.RowIndex].FindControl(”txtsalary”) as TextBox).Text;
gv.EditIndex = -1;
binddata();
DataSet ds =(DataSet) gv.DataSource;
ds.Tables[0].Rows[i]["empid"] = id;
ds.Tables[0].Rows[i]["empname"] = name;
ds.Tables[0].Rows[i]["empcity"] = city;
ds.Tables[0].Rows[i]["empsalary"] = salary;
ds.WriteXml(Server.MapPath(”empdata.xml”));
binddata();
}
protected void pageddata(object s, GridViewPageEventArgs e)
{
gv.PageIndex = e.NewPageIndex;
binddata();
}
protected void insert(object sender, EventArgs e)
{
binddata();
DataSet ds = gv.DataSource as DataSet;
DataRow dr = ds.Tables[0].NewRow();
dr[0] = empId.Text;
dr[1] = empName.Text;
dr[2] = empcity.Text;
dr[3] = empsalary.Text;
ds.Tables[0].Rows.Add(dr);
ds.AcceptChanges();
ds.WriteXml(Server.MapPath(”empdata.xml”));
binddata();
empId.Text = string.Empty;
empcity.Text = string.Empty;
empName.Text = string.Empty;
empsalary.Text = string.Empty;
}


اینم یکی دیگه



protected void gvBooks_RowDataBound(object sender, GridViewRowEventArgs e)
{
AddConfirmDelete((GridView)sender, e);
}

/// <summary>
/// If the gridview has a command field where showdeletebutton is true, then
/// it add a confirm message.
/// This function should be called in the RowDataBound event
/// </summary>

public static void AddConfirmDelete(GridView gv, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
foreach (DataControlField dcf in gv.Columns)
{
if (dcf.ToString() == "CommandField")
{
if (((CommandField)dcf).ShowDeleteButton == true)
{
e.Row.Cells[gv.Columns.IndexOf(dcf)].Attributes
.Add("onclick", "return confirm(\"Are you sure?\")");
}
}
}
}
}

Hope22
دوشنبه 28 مرداد 1387, 11:28 صبح
حالا میخواهم هرکی روی این دکمه کلیک کرد id همون سطر رو بهم بده

سلام رفیق
میتونی از این کد استفاده کنی :


protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
int row = -1;
int.TryParse(e.CommandArgument as string, out row);
GridViewRow gdrow = GridView1.Rows[row];

البته متد GridView1_RowCommand رو باید تو Event های GridView تعریف کنی
موفق باشی

gm.sara
سه شنبه 29 مرداد 1387, 10:39 صبح
سلام
حالا اگر بخواهیم توی Gridview از DataKey استفاده کنیم ، توی برنامه چطور می شود از آن استفاده کرد؟ که مقدارش را به ما برگرداند؟