Ana içeriğe geç

DetayTablo Nesnesinde Kolona Göre Sıralama

DetayTablo nesnesinde belirli bir kolona göre sıralama yapılması için aşağıdaki kod kullanılabilir.

Örnekte DetayTablo1 nesnesi üzerindeki satırlar Metin1 TextBox’ ındaki değere göre sıralanmıştır. DetayTablo’daki tüm veri öncelikle bir DataTable’ a aktarılmakta, DataTable üzerinde metin1 kolonuna göre ASC sıralanmaktadır. Sonrasında DetayTablo1 üzerindeki tüm satırlar silinmekte ve DataTable’ daki sıralanmış veri tekrar DetayTablo1’ e eklenmektedir.

using System.Data;
using System.Web.UI.WebControls;

DataTable data = new DataTable();

DataColumn metin1 = new DataColumn("Metin1", typeof(string));

//DataColumn metin2 = new DataColumn("Metin2", typeof(string));

DataColumn liste1 = new DataColumn("Liste1", typeof(string));

DataColumn liste1_Text = new DataColumn("Liste1_TEXT", typeof(string));

data.Columns.Add(metin1);

//data.Columns.Add(metin2);

data.Columns.Add(liste1);

data.Columns.Add(liste1_Text);

for (int i = 0; i < DetayTablo1.CurrentRowCount; i++)

{

DataRow newRow = data.NewRow();

newRow["Metin1"] = ((TextBox)DetayTablo1.GetRowObject(i, "Metin1")).Text;

//newRow["Metin2"] = ((TextBox)DetayTablo1.GetRowObject(i, "Metin2")).Text;

newRow["Liste1"] = ((DropDownList)DetayTablo1.GetRowObject(i, "Liste1")).SelectedValue;

newRow["Liste1_TEXT"] = ((DropDownList)DetayTablo1.GetRowObject(i, "Liste1")).SelectedItem.Text;

data.Rows.Add(newRow);

DataView dataview = data.DefaultView;

dataview.Sort = "Metin1 ASC";

DataTable dtSort = dataview.ToTable();

}

DetayTablo1.CurrentRowCount = 0;

foreach (DataRow dr in dtSort.Rows)

{

((TextBox)DetayTablo1.GetRowObject(DetayTablo1.CurrentRowCount, "Metin1")).Text = dr["Metin1"].ToString();

//((TextBox)DetayTablo1.GetRowObject(DetayTablo1.CurrentRowCount, "Metin2")).Text = dr["Metin2"].ToString();

((DropDownList)DetayTablo1.GetRowObject(DetayTablo1.CurrentRowCount, "Liste1")).SelectedValue = dr["Liste1"].ToString();

((DropDownList)DetayTablo1.GetRowObject(DetayTablo1.CurrentRowCount, "Liste1")).SelectedItem.Text = dr["Liste1_TEXT"].ToString();

DetayTablo1.CurrentRowCount++;

}