簡體   English   中英

使用linq從DataTable獲取布爾值

[英]Getting a bool value from DataTable with linq

我必須使用DataTable和linq填充DataGrid。 DataTable包含一個MySql表(我正在使用linq在網絡流量方面優化程序),但是當linq嘗試從DataTAble獲取布爾值時,我得到了“ InvalidCastException”例外。 帶有“'OneWay'或'TwoWay'bing無法正常工作...”文本。 有什么辦法可以使其工作? (不好意思)

            string q = "Select * from `beszallitoi_megrendeles` "
                  + "where megrendelt='1' and beerkezett='0' "
                  + "order by megrendeles_datuma desc;";
            parancs = new MySqlCommand(q, Kapcsolat);
            Kapcsolat.Open();
            parancs.ExecuteNonQuery();

        MySqlDataAdapter mda = new MySqlDataAdapter(parancs);
        DataTable dt = new DataTable("beszallitoi_megrendeles");
        mda.Fill(dt);
        mda.Update(dt);
...
        var results = from a in dt.AsEnumerable()
                      select new
                      {
                          AZ = a.Field<int>("AZ"),
                          MEGRENDEL = a.Field<DateTime>("MEGRENDEL"),
                          KERTSZDATUM = a.Field<DateTime>("KERTSZDATUM"),
                          VEVO_CSOPORT = a.Field<string>("VEVO_CSOPORT"),
                          ROVIDVEVONEV = a.Field<string>("ROVIDVEVONEV"),
                          GYARTO = a.Field<string>("GYARTO"),
                          MEGNEVEZES = a.Field<string>("MEGNEVEZES"),
                          DARAB = a.Field<int>("DARAB"),
                          MEGJEGYZES = a.Field<string>("MEGJEGYZES"),
                          RENDSZAM = a.Field<string>("RENDSZAM"),
                          BRENDSZAM = a.Field<string>("BRENDSZAM"),
                          ROGNEV = a.Field<string>("ROGNEV"),
                          BESZALLITO = a.Field<string>("BESZALLITO"),
                          MEGREND = a.Field<DateTime>("MEGREND"),
                          VARERK = a.Field<DateTime>("VARERK"),
                          CSKULD = a.Field<string>("CSKULD"),
                          MEGJEGY2 = a.Field<string>("MEGJEGY2"),
                          BMEGREND = a.Field<bool>("BMEGREND"),
                          BERKDAT = a.Field<DateTime>("BERKDAT"),
                          BEERK = a.Field<bool>("BEERK")
                      };
        DgUjMegrendeles.ItemsSource = results;

編輯:這是布爾值列:(我將模式從“ TwoWay”修改為“ OneWay”,然后是“ OneTime”,但是所有行都具有真實值)

<DataGridCheckBoxColumn  Width="45" Header="MREND." Binding="{Binding BMEGREND, Mode=OneTime, UpdateSourceTrigger=PropertyChanged}"/>

您正在創建的匿名類型( new { AZ = ... } )具有只讀屬性。 您正在嘗試使用TwoWay綁定模式綁定到某些東西。 您將必須將綁定模式設置為OneWayOneTime 但是,您不顯示XAML。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM