簡體   English   中英

從組合框中選擇數據,並在列表框c#中向其顯示信息

[英]Select Data from combo box and shows the information to it in List Box c#

我遇到了一個問題,即當用戶在組合框中選擇所選名稱時,與所選名稱鏈接的數據將顯示在列表框中。 我在將此方法制作時遇到問題。 錯誤就在這里。

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";

任何幫助將不勝感激。

  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";

        }
    }

答案在這里!

如果字符串可用,我會嘗試這個

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

您還可以添加數據綁定

BindingContext oBC = new BindingContext();
    cbLocStation.BindingContext = oBC;
    cbLocStation.DataBindings.Add(new Binding("SelectedValue", DeleteRT, "RequiredLocationStationID", false, DataSourceUpdateMode.OnPropertyChanged));

您正在嘗試將匿名類型從查詢轉換為時間跨度,這是不可能的,因為它沒有實現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

暫無
暫無

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

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