DetayTablo Nesnesinde Koşula Göre Alan Renklendirme ve Zorunluluk Kontrolü
DetayTablo nesnesinde bir koşula göre nesne özelliklerini değiştirmek için aşağıdaki kod kullanılabilir.
Örnekte DetayTablo’da Metin1, Metin2, Metin3 isimli 3 adet TextBox bulunmaktadır. Metin1 TextBox’ına girilen değer, Metin2 TextBox’ına girilen değerden büyük ise Metin3 TextBox’ının yazı rengini kırmızı yapılacak ve Metin3 ün boş bırakılmasına izin verilmeyecektir.
using System.Web.UI.WebControls;
public void DetayTablo1_RowInserting(object sender, DetailsGridInsertRowEventArgs args)
{
if(DetayTablo1.CurrentRowCount > 0)
{
for(int i=0;i<DetayTablo1.CurrentRowCount;i++)
{
TextBox tx1 = (TextBox)DetayTablo1.GetRowObject(i,"Metin1");
TextBox tx2 = (TextBox)DetayTablo1.GetRowObject(i,"Metin2");
TextBox tx3 = (TextBox)DetayTablo1.GetRowObject(i,"Metin3");
if(Convert.ToInt32(tx1.Text)>Convert.ToInt32(tx2.Text))
{
tx3.ForeColor=System.Drawing.Color.Red;
}
}
}
}
//OnSaveData eventinde DetayTablo satırları arasında dolaşıyoruz. Metin3 alanı kırmızı olan ve Metin3 alanı boş bırakılan satırlar için formun üzerine koyduğumuz control isimli(varsayılan değeri 0) TextBox’a "Doldurunuz" değerini yazdırıyoruz.
public void OnSaveData()
{
control.Text = "";
for(int i=0;i<DetayTablo1.CurrentRowCount;i++)
{
if(string.IsNullOrEmpty(((TextBox)DetayTablo1.GetRowObject(i,"Metin3")).Text))
{
if(((TextBox)DetayTablo1.GetRowObject(i,"Metin3")).ForeColor == System.Drawing.Color.Red)
{
control.Text = "Doldurunuz";
}
}
}
}
//Daha sonra validasyon tarafında control isimli TextBox’taki değer kontrol edilir ve bu değer “Doldurunuz” ise uyarı verilir.
public override void OnValidateDocument(string view, bool canEdit, Hashtable parameters, ValidationSummary summary)
{
//validation code goes here
//summary.AddMessage("message");
if(control == "Doldurunuz")
summary.AddMessage("DetayTablo’daki alan boş bırakılamaz!");
}