Merhaba arkadaslar;
Gelistirme esnasinda karsilastigim problemleri ve çözümlerini burada herkesle paylasiyorum.Bir Dert daha ?
DERT
Bir Tablom var ve tabloda Durum tipinde 1 bit lik bir alanim var.Yani bu hücrenin alabilecegi degerler ya null, ya True(1), yada False(0) degerlerinden birini alabiliyor.
Bu tablo kullanacak uygulamayi asp.net c# ile gelistirmekteyim. Tablodaki verileri datalist nesnesine asagidaki gibi çekiyorum
|
public partial class CheckBoxProblemi : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.Listele();
}
}
public void Listele()
{
using (var dt = new DataTable())
{
using (var connection = new SqlConnection("server=??; database=??; user id=??; password=???"))
{
connection.Open();
using (var command = new SqlCommand("SELECT * FROM Kisiler", connection))
{
dt.Load(command.ExecuteReader());
dtListe.DataSource = dt.DefaultView;
dtListe.DataBind();
}
connection.Close();
}
}
}
}
|
|
<head runat="server">
<title>ChekBox Problemi</title>
</head>
<body>
<form id="form1" runat="server">
<asp:DataList ID="dtListe" runat="server">
<ItemTemplate>
<asp:CheckBox ID="chkAktif"
runat="server"
Text="Aktif"
Checked='<%# Eval("Durum") %>'/>
</ItemTemplate>
</asp:DataList>
</form>
</body>
</html>
|
Çekiyorum diyorum ama çekemiyorum
Asagidaki hata hemen selamünaleyküm ismail diyor.
Bunun sebebi sudur CheckBox nesnesinin alabilecegi degerler ya TRUE dir yada False dur.Ama durum hücresinde Null bir deger oldugunda çevirme hatasi ile karsilasiyoruz.
|
'/' Uygulamasinda Sunucu Hatasi.
Belirtilen atama geçerli degil.
Açiklama: Geçerli web istegi yürütülürken islenmemis özel durum olustu. Lütfen hata ve kod içinde kaynaklandigi yer hakkinda daha fazla bilgi almak için yigin izlemesini gözden geçirin.
Özel Durum Ayrintilari: System.InvalidCastException: Belirtilen atama geçerli degil.
Kaynak Hatasi:
Satir 11: <asp:DataList ID="dtListe" runat="server">
Satir 12: <ItemTemplate>
Satir 13: <asp:CheckBox ID="chkAktif"
Satir 14: runat="server"
Satir 15: Text="Aktif"
|
|
DERMAN
Bu problemi de çözmenin söyle bir yolu var.Durum hücresi hiçbir zaman null olmayacak yani ya TRUE(1) yada False(0) gireceksiniz.
Bu islemi Hücrenin Defaultvalue özelligine ya 0 yada 1 degerini aktararak çözebilirsiniz.
Herkese iyi Çalismalar
Ismail Kocacan (Yazilimci Bozuntusu)