簡體   English   中英

System.Data.DataRowView在Winforms組合框中顯示而不是實際數據

[英]System.Data.DataRowView shows in winforms combobox instead of actual data

加載組合框后,它將顯示System.Data.DataRowView而不是數據。 我使用的是從存儲過程返回的正確列名(TimeframeDesc和TimeframeCode)。

調試時收到消息“無法綁定到新的顯示成員”。

        private bool loadTimeframeList(out string msg)
    {
        msg = "";
        string spName = "schemaExec.SelTimeframeCode";
        bool result = true;
        SqlCommand cmd = new SqlCommand(spName);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Connection = _sqlConn;

        try
        {
            SqlDataAdapter rdr = new SqlDataAdapter(cmd);
            cmd.ExecuteNonQuery();
            DataTable dt = new DataTable();
            rdr.Fill(dt);

            cbTimeframe.DisplayMember = "TimeframeDesc";
            cbTimeframe.ValueMember = "TimeframeCode";
            cbTimeframe.DataSource = dt;             
        }
        catch (Exception ex)
        {
            result = false;
            msg = "Could not load Timeframe Codes" + Environment.NewLine + ex.Message;
        }
        return result;
    }

不知道這是否引起您的問題,但是您不必使用cmd.ExecuteNonQuery(); 在您填表之前。 只是:

DataTable dt = new DataTable();
using(SqlCommand cmd = new SqlCommand("schemaExec.SelTimeframeCode", _sqlConn))
{
    cmd.CommandType = CommandType.StoredProcedure;
    using(var da = new SqlDataAdapter(cmd))
        da.Fill(dt);
}
cbTimeframe.DisplayMember = "TimeframeDesc";
cbTimeframe.ValueMember = "TimeframeCode";
cbTimeframe.DataSource = dt;     

在Visual Studio的斷點處,使用放大鏡打開數據表的調試查看器。 或者表中的foreach DataColumn將列名追加到StringBuilder

這不是您的情況,但是如果數據源是在DisplayMemberValueMember屬性之前設置的,則有時在還原訂單時會發生這種情況。 或者沒有從以前的數據源中清除。

cbTimeframe.DataSource = dt;
cbTimeframe.DisplayMember = "TimeframeDesc";
cbTimeframe.ValueMember = "TimeframeCode";

要么

cbTimeframe.DataSource = ds1;
cbTimeframe.DisplayMember = "fn1";
cbTimeframe.ValueMember = "fn1";

cbTimeframe.DataSource = ds2; -> here you will get the problem (in the Event of index changed) if u didn't clean the DataSource used .
cbTimeframe.DisplayMember = "fn2";
cbTimeframe.ValueMember = "fn2";

暫無
暫無

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

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