-1

私はddlを入力しようとしています(これは機能します)。「FirstName」を選択すると、編集用にテキストボックスが入力されます。プログラムをステップ実行すると、(drp_Customer.SelectedItem.Value) は常に「23」であり、これは DB の最後の「Id」です。フィールドにはデータが取り込まれますが、23 の詳細が含まれています。

ddl の詳細が一致していることを確認する必要があると考えています。

これが私のコードです。それがどのように機能するかを誰かに見せようとしているので、それは大まかなことです.

            using (CustomerDataContext obj = new CustomerDataContext())
        {
            // Get fields for drp_Customer
            // ===========================
            var allCustomers = from c in obj.Customers
                               orderby c.FirstName
                               select new
                                   {
                                       c.FirstName,
                                       c.CustomerId
                                   };

            foreach (var item in allCustomers)
            {
                drp_Customer.Items.Add(item.FirstName);
                drp_Customer.SelectedItem.Value = item.CustomerId.ToString();
            }

            drp_Customer.DataBind();

            if (drp_Customer.SelectedItem.Text == " -- Select Customer -- ")
            {
                lbl_message.Text = "Please select a customer to update";
            }
            else if (drp_Customer.SelectedItem.Text != " -- Select Customer -- ")
            {

       Customer myCust = obj.Customers.SingleOrDefault(c => c.CustomerId ==  Convert.ToInt32       
            (drp_Customer.SelectedItem.Value));

                if (myCust != null)
                {
                    txt_FirstName.Text = myCust.FirstName;
                    txt_Surname.Text = myCust.Surname;
                    txt_HouseNumber.Text = myCust.HouseNumberName;
                    txt_Address.Text = myCust.Address;
                    txt_Town.Text = myCust.Town;
                    txt_Telephone.Text = myCust.Telephone;
                    txt_Postcode.Text = myCust.Postcode;
                }

            }
4

2 に答える 2

0

常に最後のアイテムが選択される理由は、次のループです。

foreach (var item in allCustomers)
{
    drp_Customer.Items.Add(item.FirstName);
    drp_Customer.SelectedItem.Value = item.CustomerId.ToString();
}

常に変更しているため、最後の項目が選択された項目になります。ループの外側に割り当てる必要があります。しかし、どの顧客が現在選択されている正しい顧客であるかを示していません。

DataSource+も使用できることに注意してくださいDataBind

drp_Customer.DataTextField = "FirstName";
drp_Customer.DataValueField = "CustomerId";
drp_Customer.DataSource = allCustomers;
drp_Customer.DataBind();
drp_Customer.SelectedValue = customerIDofSelectedCustomer;
于 2013-01-16T11:31:40.123 に答える
0

DataTextFieldおよびDataValueFieldプロパティを使用して、表示されるバインドされたオブジェクトのプロパティと、選択された値として使用されるプロパティを設定します。

drp_Customer.DataTextField = "FirstName";
drp_Customer.DataValueField = "CustomerId";
drp_Customer.DataSource = allCustomers.ToList();
drp_Customer.DataBind();
于 2013-01-16T11:30:12.623 に答える