2009-03-03 5 views
0

Tamam büyük beyinler, bir gereksinimden daha fazla zorlanan bir şey. Biraz güldüm. Genellikle doğru yönde bir prod'a ihtiyacım var, bu yüzden prodding stick'lerinizi hazırlayın.İki düzine değer, veri kutularına karşı metin kutuları, algoritmik olarak kontrol etme

Metin kutularında bir tabcontrol var. SelectedIndexChanged olayı sırasında tüm metin kutularının içeriğini aynı formdaki bir liste görünümünde kontrol etmek istiyorum. Metin kutularından biri, ListView Öğesi tarafından temsil edilen bir DataTable satırından farklı bir veriye sahipse, kullanıcının yaptıklarını değiştirmeyi isteyip istemediğini sormasını istiyorum. Hiçbir şey değişmezse, sadece seçimi değiştirmesini istiyorum.

Açıkçası, metin kutularının içeriğini datarow'daki ilişkili sütunlarla karşılaştırıyorum.

Sadece çeki kuvvetlendirebilir ve her birini tek tek kontrol edebilirim. Tabcontrol metin kutularını kullanarak ve sütun değerleri ile değerleri kontrol ederek akıllıca algoritmik bir yol bulmayı tercih ederim.

Herhangi bir öneriniz var mı?

DÜZENLEME: Her ikisi de iyi olsa da, "akıllıca adlandırılmış metin kutuları" çözümünü en iyi şekilde beğeniyorum. Gelecek 14 gün içinde başka kimse daha iyi bir fikre sahip değilse, metin kutusu cevabı yeşile döner.

cevap

0

Metin kutularına, adın bir kısmı sütun/satır adı olduğu gibi akıllı bir ad verin. Grup metin kutusunun içinden bir döngü kontrol eder. Her kontrol için (kısım) ismini alın ve bunu datatabınıza referans olarak kullanın. Değerleri kontrol et.

0

Sizi doğru anlıyorsanız, her bir değişiklik kutusundaki her bir metin kutusunun, yalnızca ListView denetiminin SelectedIndexChanged olayı tarafından değiştirilen metin kutularını kontrol etmekten yana olmasını önlemek istemezsiniz. Bu doğru mu?

DataRows ve DataTable'lar zaten satır sürümleri ve geri almaların uygulanmasına sahiptir, bu nedenle metin kutularını temeldeki satıra bağlarsanız (ya değişiklik/geri odaklanmaya geri yazmak için olayları yazarak ya da başarmak için otomatik bir mekanizma kullanarak) Aynı görev), daha sonra SelectedIndexChanged üzerindeki RowState özelliğini kontrol edin. RowState değişmeden başka bir şeyse, kullanıcıyı kaydetmesini isteyin. Kaybolursa, değişiklikleri yapın, aksi takdirde reddedin.

Yani, örneğin, kendi Selectedındexchanged olay işleyicisi böyle bir şey ister ki:

if (row.RowState == DataRowState.Modified) { 
    // prompt for user input 
    if (promptResult == PromptResult.Save) { 
    row.AcceptChanges(); 
    } 
    else { 
    row.RejectChanges(); 
    } 
} 
İlgili konular