A
B
C
Ç
D
E
F
G
Ğ
H
I
İ
J
K
L
M
N
O
P
R
S
Ş
T
U
Ü
V
Y
Z
Q
W
X
+ İçerik Ekle
Gridview, Kontrolü, ile, Çoklu, İşlemler
Gridview Kontrolü ile Çoklu İşlemler

Gridview Kontrolü ile Çoklu İşlemler Kalabalık bir kayıt listesi içerisinde gereksiz olan bir çok kayıt silinmek istendiğinde bu kayıtları tek tek silmek çoğu zaman kullanıcı için sıkıcı bir iştir. Bunun için kullanıcı gereksiz olan kayıtları kendisi seçip, tek bir sefer de silmeyi tercih eder. Bu kullanıcıya büyük kolaylık sağlar. Normalde gridview nesnesinde kayıt listesinin yanında sil isimli bir buton koyar ve o satırdaki kaydı sildirirdik. Biz gridview nesnemizi biraz daha genişleterek kullanıcının kayıtların tümünü seçerek veya tek tek sileceği bir kayıt listesi sunacağız.

İlk olarak visual studio açalım ve asp.net projesi oluşturalım. Ben dil olarak C# Seçtim.



Daha sonra projemizde kullanacağımız nesnelerden bahsedelim. Ben projemde Northwind database’i içerisindeki Products tablosunu kullanacağım. Field olarak da Grid içerisin de ProductID, ProductName ve UnitPrice fieldlarını kullanacağım. Ek olarak grid içerisinde bir template field oluşturup Header Template içerisine CheckAll isimli bir checkbox ve item template içerisinede deleteRec isimli biimgr checkbox kontrolü ekledim. Birde seçeceğim kayıtları sildirmek için bir adet link buton ekledim. Form tasarımım aşağıdaki gibi oluştu.







Formumuzun tasarımını tamamladıktan sonra şimdi Tümünü seç ve tek tek seçim yapmak için gerekli olan javasctipt kodlarını yazalım.

function
check_uncheck(Val)

check_uncheck(Val) check_uncheck(Val)

{

var ValChecked = Val.checked;

var ValId = Val.id;

var frm = document.forms[0];

for (i = 0; i < frm.length; i++)

{

if (this != null )

{

if (ValId.indexOf(’CheckAll’ ) != - 1)

{

if

if (ValChecked)

frm.elements[i].checked = true ;

else

frm.elements[i].checked = false ;

}

else if (ValId.indexOf(’deleteRec’ ) != - 1)

{

if (frm.elements[i].checked == false )

frm.elements[1].checked = false ;

}

} // if

} // for

} // function

Javascript içerisine fonksiyonlarımızı yazdıktan sonra bunu gridview nesnesi üzerindeki checkboxlarda çağıralım.

< asp : GridView ID ="dbGrid" runat ="server" AutoGenerateColumns ="False" CellPadding ="4"

asp : GridView ID ="dbGrid" runat ="server" AutoGenerateColumns ="False" CellPadding ="4"

Font-Names ="Verdana" Font-Size ="X-Small" ForeColor ="#333333" GridLines ="None"

Width ="448px">

< FooterStyle BackColor ="#5D7B9D" Font-Bold ="True" ForeColor ="White" />

< Columns >

< asp : TemplateField >

< HeaderTemplate >

< asp : CheckBox ID ="CheckAll" runat ="server" onClick ="return check_uncheck(this);" /> --->>> tümünü Seç

HeaderTemplate >

< ItemTemplate > < asp : Label ID ="ProductID" Visible ="false"

Text =’ ’

runat ="server" />

< asp : CheckBox ID ="deleteRec" runat ="server" onClick ="return check_uncheck (this );" /> --->>> Tek Tek Seç

ItemTemplate >

< FooterTemplate >

FooterTemplate >

asp : TemplateField >

< asp : BoundField DataField ="ProductID" HeaderText ="ProductID" />

< asp : BoundField DataField ="ProductName" HeaderText ="ProductName" />

< asp : BoundField DataField ="UnitPrice" HeaderText ="UnitPrice" />

Columns >

< RowStyle BackColor ="#F7F6F3" ForeColor ="#333333" />

< EditRowStyle BackColor ="#999999" />

< SelectedRowStyle BackColor ="#E2DED6" Font-Bold ="True" ForeColor ="#333333" />

< PagerStyle BackColor ="#284775" ForeColor ="White" HorizontalAlign ="Center" />

< HeaderStyle BackColor ="#5D7B9D" Font-Bold ="True" ForeColor ="White" HorizontalAlign ="Left" />

< AlternatingRowStyle BackColor ="White" ForeColor ="#284775" />

asp : GridView >

Bu yazdıklarımızı test edelim. Projemizi çalıştıralım ve tek tek kayıtları seçelim. Ardından tümünü seç butonuna tıklayıp düzgün çalışıp çalışmadığını kontrol edelim.



Kodumuz düzgün çalıştığına göre artık sectiğimiz kayıtları silelim.

protected void LinkButton2_Click(object sender, EventArgs e)

void LinkButton2_Click(object sender, EventArgs e)

{

string gvIDs = "" ;

bool chkBox = false ;

foreach (GridViewRow gv in dbGrid.Rows)

{

CheckBox deleteChkBxItem = (CheckBox )gv.FindControl("deleteRec" );

if (deleteChkBxItem.Checked)

{

chkBox = true ;

gvIDs += (( Label )gv.FindControl("ProductID" )).Text.ToString() + "," ;

}

}

SqlConnection cn = new SqlConnection ("Data Source=.; Initial Catalog=Northwind; uid=sa; pwd=" );

if (chkBox)

{

try

{

string deleteSQL = "DELETE from Products WHERE ProductID IN (" +

gvIDs.Substring(0, gvIDs.LastIndexOf( "," )) + ")" ;

SqlCommand cmd = new SqlCommand (deleteSQL, cn);

cn.Open();

cmd.ExecuteNonQuery();

dbGrid.DataSource = DataTableGetirLan();

dbGrid.DataBind();

Response.Write( "Seçmiş olduğunuz kayıtlar Silindi !" );

}

catch (SqlException err)

{

Response.Write(err.Message.ToString());

}

finally

{

cn.Close();

}

}

}



Son olarak silme işlemini de test edelim.



Gördüğümüz gibi tek sefer de seçmiş olduğumuz kayıtlar silindi.

Not: Eğer sizde nortwind içerisindeki Products tablosunu kullanacaksanız diğer tablolar ile arasında bulunan ilişkileri kaldırın. Yoksa kayıtları silerken hata alacaksınız.

Bu makalemizinde sonuna geldik. Umarım faydalı bir makale olmuştur. İyi günler ve başarılar dilerim.