1

フォームにコンボ ボックス " cboCurPartNum" があります。フォームを開こうとすると、既存のデータがフォームに取り込まれますが、SQL サーバーに保存されている値がコンボ ボックスに表示されません。

レコードの値をコンボ ボックスに表示するにはどうすればよいですか?

ここで起こっていることは、フォームが「エンジニアリング注文の変更」モードで開かれていることです。だから、声明は

public EngOrd engord;

開かれている設計指図のデータが含まれています。

問題は"addEngOrd" = false、「Modify Engineering Order」セクションのどこかです。メソッド " PutNewEngOrd()" が呼び出され、newEngOrd開かれた設計指図の既存の値がオブジェクトに割り当てられます。

私の問題は、次のセットを持つコンボボックス「cboCurPartNum」にあります。

Data Source - partBindingSource
Display Member - PartNumber
Value Member - PartNumber
Selected Value - engOrderBindingSource - CurPartNum

engordBindingSource.Add(newEngOrd);" " は" " の実行後に呼び出されるため、このコンボ ボックスには "newEngOrd" のパーツ番号が割り当てられている必要がありPutNewEngOrd()ます。

コンボ ボックスに部品番号が表示されないのはなぜですか? 部品番号はデータベースに保存されます。

これが私のコードです:

public partial class frmEngOrdAddModify : Form
{
    public frmEngOrdAddModify()
    {
        InitializeComponent();            
    }

    public bool addEngOrd;  //indicates if adding to the form or not
    public EngOrd engord; //data from the frmEngOrd (old eng order)
    private EngOrd newEngOrd;  //new data we are capturing here (new eng ord)


    private void frmEngOrdAddModify_Load(object sender, EventArgs e)
    {
        this.LoadComboBoxes();           

        if (addEngOrd)
        {
            this.Text = "Add Engineering Order";
            newEngOrd = new EngOrd();
            engordBindingSource.Clear();
        }
        else
        {
            this.Text = "Modify Engineering Order";
            newEngOrd = new EngOrd();                
            this.PutNewEngOrd();
        }
        engordBindingSource.Add(newEngOrd);  //put the existing or a new EngOrd dataset with the binding source


    }

    private void LoadComboBoxes()
    {

        List<EngOrdType> engOrdTypeList;
        engOrdTypeList = EngOrdTypeDB.GetEngOrdType();
        cboEOFileType.DataSource = engOrdTypeList;
        cboEOFileType.SelectedIndex = -1;

        List<Customer> customerList;
        customerList = CustomerDB.GetCustomerTeamList();
        cboCustomer.DataSource = customerList;
        cboCustomer.SelectedIndex = -1;

        List<Part> partList;
        partList = PartDB.GetPartList();
        cboCurPartNum.DataSource = partList;            
        cboCurPartNum.SelectedIndex = -1;

        // with modify mode intially display the value passed in from engord
        if (addEngOrd == false)
        {
            MessageBox.Show("assign here " + engord.CurPartNum);
            cboCurPartNum.SelectedValue = engord.CurPartNum;
        }
    }

    private void PutNewEngOrd()
    {
        newEngOrd.EO = engord.EO;
        newEngOrd.EONum = engord.EONum;
        newEngOrd.FileType = engord.FileType;
        newEngOrd.JobNum = engord.JobNum;
        newEngOrd.QuoteNum = engord.QuoteNum;
        newEngOrd.CustID = engord.CustID;
        newEngOrd.CurPartNum = engord.CurPartNum;            

    }

}

これは、デザイナーが生成した「cboCurPartNum」のコードです。

this.cboCurPartNum.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.engordBindingSource, "CurPartNum", true));
this.cboCurPartNum.DataSource = this.partBindingSource;
this.cboCurPartNum.DisplayMember = "PartNumber";
this.cboCurPartNum.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboCurPartNum.FormattingEnabled = true;
this.cboCurPartNum.Location = new System.Drawing.Point(142, 23);
this.cboCurPartNum.Name = "cboCurPartNum";
this.cboCurPartNum.Size = new System.Drawing.Size(179, 21);
this.cboCurPartNum.TabIndex = 11;
this.cboCurPartNum.ValueMember = "PartNumber";
this.cboCurPartNum.SelectionChangeCommitted += new System.EventHandler(this.cboCurPartNum_SelectionChangeCommitted_1)

これが私が今持っているものです:これが私が今持っているものです。SelectedValue を設定するには何が必要ですか?

        private void LoadComboBoxes()
    {

        List<EngOrdType> engOrdTypeList;
        engOrdTypeList = EngOrdTypeDB.GetEngOrdType();
        cboEOFileType.DataSource = engOrdTypeList;
        cboEOFileType.SelectedIndex = -1;

        List<Customer> customerList;
        customerList = CustomerDB.GetCustomerTeamList();
        cboCustomer.DataSource = customerList;
        cboCustomer.SelectedIndex = -1;
        //MessageBox.Show(cboCustomer.SelectedItem.ToString());
        //MessageBox.Show(cboCustomer.SelectedValue.ToString());

        List<Part> partList;
        partList = PartDB.GetPartList();
        cboCurPartNum.DataSource = partList;
        cboCurPartNum.SelectedIndex = -1;
        if (addEngOrd == false)
        {
            cboCurPartNum.SelectedItem = partList[1];

        }

    }
4

2 に答える 2

1

cboCurPartNum.SelectedValue = /ここでは、「パーツ」タイプのアイテムを設定する必要があります。例partList[0] /

public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
      LoadComboboxes();
    }

    public void LoadComboboxes() {
        List<Part> partList = PartDB.GetPartList();
        cboCurPartNum.DataSource = partList;
        cboCurPartNum.SelectedIndex = -1;
        var addEngOrd = false;
        if (addEngOrd  == false) {
          //MessageBox.Show("assign here " + 1);
          cboCurPartNum.SelectedItem = partList[1];
        }
    }
  }
  public static class PartDB {
    static PartDB() {
      PartList = new List<Part> {
        new Part {
          One = 1,
          Two = "unos"
        },
        new Part {
          One = 2,
          Two = "duos"
        }
      };
    }

    private static readonly List<Part> PartList;
    public static List<Part> GetPartList() {
      return PartList;
    }
  }

  public class Part {
    public int One { get; set; }
    public string Two { get; set; }
  }
}

また、DisplayMember がコンボボックスに表示するプロパティに設定されていることを確認してください (添付ファイルを参照)。 ここに画像の説明を入力

于 2013-06-12T14:08:00.153 に答える