GridView daki Verileri Metin Dosyasına Kaydetme
Önceki makalelerde Excel dosyasına aktarmayı gördük. Şimdi Gridview nesnemizdeki verileri Metin dosyasına aktaracağız. Ayrıca Sil ve Güncelle butonları ekleyeceğiz.
İlk önce formunuza Gridview ve AccessDatasource ekleyin ve veritabanınıza bağlantıyı sağlayın. Bu örnekte NorthWind.mdb veritabanındaki Customers tablosuna bağlanacağız.
Bu işlemi yaptıktan sonra, GridView nesnesine seçili iken Add New Column a tıklayın. Açılan pencerede Choose Field Type (Alan Tipi Seçin) i CommandField, Header Text(Konu Başlığı) kısmına Islem yazın.
Ayrıca GridView nesnesinde Enable Editing ve Enable Deleting seçili olsun.
Aynı şekil de Edit Columns kısmından eklediğiniz sütunu ilk başa getirebilirsiniz.
Default.aspx.cs ye Şekil 1 de gösterilen kırmızı çerçevede gösterilen, DeleteCommand, UpdateCommand kısmını ekleyin.
formunuza aşağıdaki kodları yazın.
Şekil 1
Şekil 2
Şekil 3
Şekil 4
Şekil 5
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.IO;
using System.Text;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
private void GereksizKolonlariSil()
{
// Eğer Select, Edit ve Delete gibi CommandFieldlar aktif ise bu butonların bulunduğu sütunu gridden kaldırıyoruz.
for (int i = 0; i < GridView1.Columns.Count; i++)
{
if (GridView1.Columns[i] is CommandField)
GridView1.Columns.RemoveAt(i);
}
}
protected void btnKaydet_Click(object sender, EventArgs e)
{
GereksizKolonlariSil();
// Sadece bu kayıtlar şıkkı seçilirse ek bir işlem yapmaya gerek yoktur. Diğer iki şıkkı ele alıyoruz.
if (RadioButtonList1.SelectedIndex == 1) // İlk 30 kayıt
{
GridView1.PageIndex = 0;
GridView1.PageSize = 30;
}
else if (RadioButtonList1.SelectedIndex == 2) // Tüm kayıtlar
{
GridView1.AllowPaging = false;
}
GridView1.DataBind();
TextKaydet(); // Bu metot az sonra yazacağımız ve kayıtları metinsel dosyaya aktaracak olan metot
}
protected void TextKaydet()
{
// string birleştirme işleminin daha performanslı olması için System.Text isim alanı
// altında yer alan StringBuilder ile string birleştirme işlemi yapacağız
StringBuilder sb = new StringBuilder();
// Öncelikli olarak gridviewdaki sütunların başlıklarını okuyor ve değişkenimize ekliyoruz
foreach (DataControlField cell in GridView1.Columns)
{
sb.Append(cell.HeaderText + " "); // HeaderText property si hücrenin başlık bilgisini getirir
}
sb.Append(Environment.NewLine); // Yeni bir satır açıyoruz
// Artık kayıtları tek tek okuyup değişkenimize ekliyoruz
foreach (GridViewRow gvr in GridView1.Rows)
{
for (int i = 0; i < GridView1.Columns.Count; i++)
{
// Eğer hücrede boş değer varsa karakterinin yazılmasını engellemek için kontrol yapıyoruz
if (gvr.Cells[i].Text == " " || gvr.Cells[i].Text == "")
sb.Append(" - ");
else
sb.Append(gvr.Cells[i].Text + " ");
}
sb.Append(Environment.NewLine); // Satır bittiğinde bir alt satıra geç
}
// Okuma işlemi bitti ve değişken hazır. Artık metinsel dosyanın oluşturulması ve kullanıcı tarafından
// yüklenmesi için gerekli işlemleri gerçekleştiriyoruz
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=Bilgi.txt");
Response.ContentType = "application/vnd.text";
Response.Write(sb.ToString());
Response.End();
}
}
//Bir sonraki makalede görüşmek üzere. Bahadır