0

ユーザーがコンボボックス内で選択した名前を選択すると、選択した名前にリンクされたデータがリストボックスに表示されるという問題が発生しました。この方法を作るのに問題があります。エラーはここにあります。

int selectLocStation = Convert.ToInt32(cbLocStation.SelectedValue);

エラー:タイプ'<>f_AnonymousType2'2[System.String.System.Int32]'のオブジェクトをタイプ'System.IConvertible'にキャストできません。

private void cbLocStation_SelectedIndexChanged(object sender, EventArgs e)
    {
        using (satsEntities Setupctx = new satsEntities())
        {
            int selectLocStation = Convert.ToInt32(cbLocStation.SelectedValue);

            var query = (from db in Setupctx.requiredtimings
                         join timing t in Setupctx.timings on db.RequiredTimingID equals t.TimingID
                         where db.RequiredLocationStationID == selectLocStation
                         select new
                         {
                             t.Time2
                         }).ToList();

            List<TimeSpan> lstSelectedTime = new List<TimeSpan>();

            foreach (var a in query)
            {
                lstSelectedTime.Add((TimeSpan)a.Time2);
            }

            lstTime.DataSource = lstSelectedTime;
        }
    }

これは、コンボボックス内にデータを格納するために私が行うことです。

using (satsEntities Setupctx = new satsEntities())
        {
            var DeleteRT = (from DelRT in Setupctx.requiredtimings
                            join locationstationname ls in Setupctx.locationstationnames on DelRT.RequiredLocationStationID equals ls.locationstationID
                            select new { ls.locStatname, DelRT.RequiredLocationStationID }).Distinct().ToList();

            cbLocStation.DataSource = DeleteRT.ToList();
            cbLocStation.DisplayMember = "locStatname";
            cbLocStation.ValueMember = "RequiredLocationStationID";

どんな助けでも大歓迎です。

4

3 に答える 3

1
  private void Edit_TS_Load(object sender, EventArgs e)
    {
        using (satsEntities Setupctx = new satsEntities())
        {
            var DeleteRT = (from DelRT in Setupctx.requiredtimings
                           join locationstationname ls in Setupctx.locationstationnames on DelRT.RequiredLocationStationID equals ls.locationstationID
                           select new {ls.locStatname, DelRT.RequiredLocationStationID}).Distinct().ToList();

            cbLocStation.DataSource = DeleteRT.ToList();
            cbLocStation.DisplayMember = "locStatname";
            cbLocStation.ValueMember = "RequiredLocationStationID";

        }
    }

答えはここにあります!

于 2012-08-08T06:29:51.137 に答える
0

文字列が利用できる場合は、これを試してみます

int selectLocStation = Convert.ToInt32(cbLocStation.SelectedValue.ToString());

またはこれ

int selectLocStation =Int32.Parse(cbLocStation.SelectedValue.ToString());

これも試すことができます

DataRowView drow = (DataRowView)cbLocStation.SelectedItem;
string str = drow.Row.ItemArray[0].ToString();

文字列に数値があるかどうかを確認し、それをintに変換します

databindを追加することもできます

BindingContext oBC = new BindingContext();
    cbLocStation.BindingContext = oBC;
    cbLocStation.DataBindings.Add(new Binding("SelectedValue", DeleteRT, "RequiredLocationStationID", false, DataSourceUpdateMode.OnPropertyChanged));
于 2012-08-02T06:19:57.530 に答える
0

匿名タイプをクエリからタイムスパンに変換しようとしていますが、IConvertibleが実装されていないため不可能です。ラッパークラスを記述して、クエリでそのクラスを選択できます。

var query = (from db in Setupctx.requiredtimings
                         join timing t in Setupctx.timings on db.RequiredTimingID equals t.TimingID
                         where db.RequiredLocationStationID == selectLocStation
                         select new WrapperClass
                         {
                             Time = t.Time2
                         }).ToList();

public class WrapperClass
        {
            public DateTime Time { get; set; }
        }

ここで、timeは、ラッパークラスで定義したDateTimeです。

于 2012-08-02T06:20:44.993 に答える