как создать несвязанный столбец, относящийся к внешнему ключу внутри сетки

я хотел бы динамически создать несвязанный столбец в элементе управления Xtragrid devexpress; есть сценарий: у меня есть сетка, связанная с данными из Payment Datatable, поля «Payment_ID, Customer_ID» и т. д. и т. д., что я хотел бы сделать, вместо того, чтобы иметь Customer_ID, который является внешним в этой таблице, я хотите, чтобы в нем Customer_Name было связано с Customer_ID, чтобы избежать путаницы. кто-нибудь помогите спасибо (используя winforms С#). ниже используется код; заполнить сетку

          using System;
          using System.Collections.Generic;
          using System.ComponentModel;
          using System.Drawing;
          using System.Data;
          using System.Linq;
          using System.Text;
          using System.Windows.Forms;
          using System.Data.SqlClient;

          namespace YoungWoman
            {
               public partial class Payment2 : UserControl
                   {
                          DataSet ds3 = new DataSet();
                          SqlDataAdapter dapayment = new SqlDataAdapter();
                          SqlConnection conne = SqlCoonectionSEtup.GetConnection;
                          BindingSource PaymentBinding = new BindingSource();

               public Payment2()
                {
                   InitializeComponent();
                }

               private void AddPayment_Click(object sender, EventArgs e)
            {
               Paymentfrm payent = new Paymentfrm(Utils.Formtype.add, 0);
               payent.PaymentEvent += new EventHandler(RefreshingGrid);
               payent.PayentlabelsEvent += new EventHandler(RefresHlabels);

               payent.ShowDialog();

            }

               private void EditPayment_Click(object sender, EventArgs e)
              {
                 Paymentfrm pyt = new Paymentfrm(Utils.Formtype.edit, 1);
               pyt.ShowDialog();
              }
                   void RefreshingGrid(object sender, EventArgs e)
             {
                  ds3.Tables["tblPaymentYW"].Clear();
                  SqlCommand cmd = new SqlCommand("SELECT * FROM PaymentYW", conne);

                       dapayment.SelectCommand = cmd;
                        dapayment.Fill(ds3, "tblPaymentYW");
                        DgPaymentYW.DataSource = ds3.Tables["tblPaymentYW"];
                        DgPaymentYW.RefreshDataSource();
             }
    void RefresHlabels(object sender, EventArgs e)
    {
        LoadData();
    }


    private void Payment2_Load(object sender, EventArgs e)
    {
        LoadData();



    }

    private void LoadData()
    {
        SqlCommand cmd = new SqlCommand("SELECT *FROM PaymentYW ORDER BY PaymentId ", conne);
        dapayment.SelectCommand = cmd;
        ds3.Clear();
        dapayment.Fill(ds3, "tblPaymentYW");
        PaymentBinding.DataSource = ds3.Tables["tblPaymentYW"];
        DgPaymentYW.DataSource = PaymentBinding;

        this.PaymentIdlabelContro.DataBindings.Clear();
        this.PaymentIdlabelContro.DataBindings.Add(new Binding("Text", PaymentBinding, "PaymentId"));
        ReservationIdlabelControl.DataBindings.Clear();
        this.ReservationIdlabelControl.DataBindings.Add(new Binding("Text", PaymentBinding, "ReservationId"));
        LesseeIdlabelControl.DataBindings.Clear();
        this.LesseeIdlabelControl.DataBindings.Add(new Binding("Text", PaymentBinding, "LesseeId"));

        DatelabelControl.DataBindings.Clear();

        this.DatelabelControl.DataBindings.Add(new Binding("Text", PaymentBinding, "PaymentDate"));
        AmountlabelControl.DataBindings.Clear();
        this.AmountlabelControl.DataBindings.Add(new Binding("Text", PaymentBinding, "AmountPaid"));
        BalancelabelControl.DataBindings.Clear();
        this.BalancelabelControl.DataBindings.Add(new Binding("Text", PaymentBinding, "Balance"));
        gridView1.Columns[1].Visible = false;
        gridView1.Columns[6].Visible = false;


        DevExpress.Utils.FormatInfo fi = new DevExpress.Utils.FormatInfo();
        fi.FormatType = DevExpress.Utils.FormatType.Numeric;
        fi.FormatString = "c2";
        gridView1.Columns[5].DisplayFormat.Assign(fi);
        gridView1.Columns[4].DisplayFormat.Assign(fi);
        Rowcount();
        Priveleges();


    }

    void Rowcount()
    {
        RecordlabelControl.Text = " Records : " + (gridView1.RowCount);

    }
    void Priveleges()
    {
        if (SqlCoonectionSEtup.Priveleges == "User")
        {
            AddPayment.Enabled = false;
            EditPayment.Enabled = false;
            CancelBtn.Enabled = false;
        }
        else
        {

            AddPayment.Enabled = true;
            EditPayment.Enabled = true;
            CancelBtn.Enabled = true;

        }
    }

}

}


person Derek Eminence Lombela    schedule 15.08.2012    source источник
comment
Что вы подразумеваете под динамическим созданием несвязанного столбца?   -  person paparazzo    schedule 15.08.2012
comment
Под динамическим созданием несвязанного столбца я подразумеваю создание с помощью кода столбца из другой таблицы, связанной ее первичным ключом, который является внешним ключом в конкретной таблице.   -  person Derek Eminence Lombela    schedule 15.08.2012
comment
Подход от Джерри должен работать. Я бы все равно назвал это связанным столбцом.   -  person paparazzo    schedule 15.08.2012


Ответы (2)


Не могли бы вы в своем операторе Select соединить таблицу PaymentYW с таблицей Customer в поле customer_ID? Тогда все поля клиента будут доступны, и вы сможете включить столбец Customer_Name в DataGrid.

person Jerry    schedule 15.08.2012

если я правильно понимаю, вы хотите отобразить эквивалентное имя клиента вместо customner_id. Этого можно добиться с помощью RepositoryItemLookUpEdit.

Сначала добавьте репозиторийItemLookUpEdit в качестве редактора столбца в столбец, сопоставленный с «Customer_ID».

Получите информацию о клиенте из таблицы клиентов и назначьте ее источнику данных репозиторияItemLookUpEdit.

"Select Customer_ID,Customer_Name from Customers" - Таким образом вы можете получить информацию о клиенте.

Добавьте два столбца в репозиторийItemLookUpEdit для идентификатора (Customer_ID) и имени (Customer_Name) и дайте им соответствующие имена полей. Назначьте поле «Customer_ID» в качестве элемента значения и поле «Customer_name» в качестве отображаемого элемента в хранилищеItemLookUpEdit. Это удовлетворит ваше требование.

Для более удобного представления вы можете сделать видимость столбца id ложной в репозиторииItemLookUpEdit.

person Krishnakumar    schedule 22.08.2012