Asp.Net ile ilgili epeydir yazı yazmıyordum, kısmet bugüneymiş. Başlıktan da anlaşılacağı üzere gridview kontrolü ile xml bir veriyi nasıl listeleyebilir, düzenleyebilir, silebilir ve yeni bir kayıt ekleyebileceğimize bakacağız. Bunun yanında gridview nesnesini css ile kolayca nasıl biçimlendirebildiğimizide göreceğiz. Lafı daha fazla uzatmadan konumuza dönelim. Aşşağıda xml verimizi görüyoruz.
<?xml version="1.0" encoding="utf-8"?>
<urunler>
<urun>
<kod>001</kod>
<ad>Cep telefonu7</ad>
<fiyat>1145</fiyat>
<parabirimi>$</parabirimi>
</urun>
<urun>
<kod>002</kod>
<ad>Fotoğraf makinası</ad>
<fiyat>250</fiyat>
<parabirimi>TL</parabirimi>
</urun>
</urunler>
İlk önce projemize yeni bir gridview kontrolü ekleyip, onrowcancelingedit, onrowdeleting, onrowediting, onrowupdating olaylarını(event) etkinleştiriyoruz. Sonrasında AutoGenerateColumns özelliğinide false olarak ayarlıyoruz. Bunun nedeni sütunları biz elle oluşturacağız, eğer sütunları direk almak istersek bu özellik true olarak kalabilir.
Birde unutmadan CssClass olarak da gridView değerini veriyoruz. Bunu gridview imizi biçimlendirirken kullanacağız. Bir sonraki adımımız xml verimizden gelecek olan veri alanlarını ve biçimlendirme için gerekli olan diğer tanımlamaları yapmak. Aşşağıda bu saydığım olayların yapılmış halini görebilirsiniz. Unutmadan birde yeni veri girişi için gerekli olan formumuz bulunuyor.
<asp:GridView runat="server" ID="gvListe" CssClass="gridView"
onrowcancelingedit="gvListe_RowCancelingEdit"
onrowdeleting="gvListe_RowDeleting" onrowediting="gvListe_RowEditing"
onrowupdating="gvListe_RowUpdating" AutoGenerateColumns="False">
<HeaderStyle CssClass="baslik" />
<RowStyle CssClass="satir" />
<AlternatingRowStyle CssClass="aSatir"/>
<Columns>
<asp:TemplateField HeaderText="Kod">
<EditItemTemplate>
<asp:TextBox ID="txtKod" runat="server" Text='<%# Bind("kod") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblKod" runat="server" Text='<%# Bind("kod") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Ad">
<EditItemTemplate>
<asp:TextBox ID="txtAd" runat="server" Text='<%# Bind("ad") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblAd" runat="server" Text='<%# Bind("ad") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Fiyat">
<EditItemTemplate>
<asp:TextBox ID="txtFiyat" runat="server" Text='<%# Bind("fiyat") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblFiyat" runat="server" Text='<%# Bind("fiyat") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Para Birimi">
<EditItemTemplate>
<asp:TextBox ID="txtParaBirimi" runat="server" Text='<%# Bind("parabirimi") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblParaBirimi" runat="server" Text='<%# Bind("parabirimi") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" ShowDeleteButton="true" />
</Columns>
</asp:GridView>
<div class="form">
<h1>Yeni kayıt ekle !</h1>
<span>Kod</span><asp:TextBox runat="server" ID="txtKod" />
<span>Ad</span><asp:TextBox runat="server" ID="txtAd" />
<span>Fiyat</span><asp:TextBox runat="server" ID="txtFiyat" />
<span>Para Birimi</span><asp:TextBox runat="server" ID="txtParaBirimi" />
<asp:Button runat="server" ID="btnEkle" Text="Ekle !" onclick="btnEkle_Click" />
</div>
Geliyoruz ikinci aşamamıza nedir bu aşamalar ? Xml verisinin listelenmesi, düzenlenmesi ve silinmesi. Bu işlemler için gerekli olan kodlarımıza bakıyoruz.
public partial class _Default : System.Web.UI.Page
{
string strVeriYol;
XmlDocument xdDoc = new XmlDocument();
protected void Page_Load(object sender, EventArgs e)
{
strVeriYol = Server.MapPath("~/veri.xml");
if (!IsPostBack)
{
gvDoldur();
}
}
protected void gvDoldur() {
DataSet ds = new DataSet();
ds.ReadXml(strVeriYol);
gvListe.DataSource = ds.Tables[0];
gvListe.DataBind();
}
protected void gvListe_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string strKod = ((Label)gvListe.Rows[e.RowIndex].Cells[0].FindControl("lblKod")).Text;
xdDoc.Load(strVeriYol);
XmlNode xnDuzenle = xdDoc.SelectSingleNode("/urunler/urun[kod='" + strKod + "']");
xnDuzenle.ParentNode.RemoveChild(xnDuzenle);
xdDoc.Save(strVeriYol);
gvListe.EditIndex = -1;
gvDoldur();
}
protected void gvListe_RowEditing(object sender, GridViewEditEventArgs e)
{
gvListe.EditIndex = e.NewEditIndex;
gvDoldur();
}
protected void gvListe_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gvListe.EditIndex = -1;
gvDoldur();
}
protected void gvListe_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string strKod = ((TextBox)gvListe.Rows[e.RowIndex].Cells[0].FindControl("txtKod")).Text;
string strAd = ((TextBox)gvListe.Rows[e.RowIndex].Cells[1].FindControl("txtAd")).Text;
string strFiyat = ((TextBox)gvListe.Rows[e.RowIndex].Cells[2].FindControl("txtFiyat")).Text;
string strParaBirimi = ((TextBox)gvListe.Rows[e.RowIndex].Cells[3].FindControl("txtParaBirimi")).Text;
xdDoc.Load(strVeriYol);
XmlNode xnDuzenle = xdDoc.SelectSingleNode("/urunler/urun[kod='"+strKod+"']");
if (xnDuzenle != null)
{
xnDuzenle["kod"].InnerText = strKod;
xnDuzenle["ad"].InnerText = strAd;
xnDuzenle["fiyat"].InnerText = strFiyat;
xnDuzenle["parabirimi"].InnerText = strParaBirimi;
xdDoc.Save(strVeriYol);
}
gvListe.EditIndex = -1;
gvDoldur();
}
protected void btnEkle_Click(object sender, EventArgs e)
{
xdDoc.Load(strVeriYol);
XmlElement xeYeni = xdDoc.CreateElement("urun");
xeYeni.InnerXml = "" + txtKod.Text + "" + txtAd.Text + "" + txtFiyat.Text + " " + txtParaBirimi.Text + "";
xdDoc.DocumentElement.AppendChild(xeYeni);
xdDoc.Save(strVeriYol);
Response.Redirect("default.aspx");
}
}
Üçüncü aşamamızda gridview imizi biçimlendirmek için gerekli olan css kodlarımız bulunuyor. Burada ilk önce table elementini sıfırlıyoruz. Daha sonra
gridview nesnemizin içinde tanımlamış olduğumuz, HeaderStyle, RowStyle ve AlternatingRowStyle özelliklerini biçimlendiriyoruz. Burada size tavsiyem
sayfanızın yorumlanmış halinin kaynak kodlarına bakmanızdır.
İlgili kodları buradan indirebilirsiniz.
Evet arkadaşlar geldik bir yazının daha sonuna, umarım faydalı olmuştur. Herkese çalışmalarında başarılar.





teşekkürler faydalı bi makale olmuş.
kod linkine ulaşılmıyor.
Teşekkür ederim, gerekli düzenlemeyi yaptım..
hocam yine problem
(İlgili kodları buradan indirebilirsiniz.)
maalesef indirilemiyor. :sad:
Enteresan bir şekilde yine sıkıntı olmuş, yeniden düzenledim. http://www.apostylee.com/resimler/Dosyalar/gridViewXml.rar buradan iniyor olması lazım :)
teşekkürler şimdi indirebildim.
Merhaba,
Benim xml tablom biraz daha farklı buradakinden. Bir çok sitelerde kullanılan flash ile efektli değişen resimler var bilirsiniz sanırım. Buradaki resimler xml e kayıt oluyor. Bu resimleri yazdığım admin paneli üzerinden değiştirmek istiyorum ancak gridview üzerinden güncelleme yapamadım.
cdata[[]]
cdata[[]]
diye buna benzer şekilde.
Bu tarz bir kullanım için nasıl bir güncelleme yapabilirim ?
Kodları yazdım fakat çıkmamış html kod diye sanırım.
buyuk kucuk işareti yerine normal parantez koyucam
(item image=”resim linki” title=”asdad” url=”link”)cData[[]](/item)
gibi.
Merhaba, dediğinizi anladım fakat şuan konuyla ilgili bilgiye sahip değilim. En kısa zamanda araştırıp size döneceğim. İlginize teşekkürler.
örnek için teşekkür ederim. aradığım cevabı sadece burada bulabildim. microsoft’un sitesi bile yetersiz kaldı. çalışmalarının devamında başarılar dilerim.
bu denli önemli bir konuya ilgi neden bu kadar az anlamadım doğrusu… teşekkür ederim emeğin için bağzı sorunlarım oldu ama umarım konuyu takip ediyorsundur..
sorum şu;
dagınık bir şemaya sahip xml den veriyi nasıl okuyabiliriz
örn:
<<< burası gibi
resim.jpg
bu tür xml de vriyi nasıl düzenleyebiliri z okuma yazma silme vs ? ilgiliz için teşekür ederim