GridView XML Veri Listeleme, Ekleme, Düzenleme ve Silme İşlemleri

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, onrowcancelingeditonrowdeleting, 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.