C # Как сократить Datagridview Selectionbound кода в чистом и правильном способе кодирования - PullRequest
0 голосов
/ 21 сентября 2018

Я всегда хотел, чтобы мой код был чище и читабельнее.Я здесь для того, чтобы этого добиться.Так как я новичок, лучше научиться этому рано.Подобно тому, как вызывать их всех в классе, я не хочу слишком много видеть этих кодов в своей форме.Я надеюсь, что кто-нибудь сможет дать мне предложения и правильный способ сделать это.

Вот мой код

 public partial class SIMSSupplier : UserControl
{
    ADDSupplier supply;
    ADDPReturns returns;
    public SIMSSupplier()
    {
        InitializeComponent();

    }
    public DataTable dbdataset;
    public DataSet ds = new DataSet();
    public string ID = "SPPLR-000";
    public int DeliveryID, OrderID, ReturnID;
    DataView db;
    DataTable dt = new DataTable();
    private void Supplierview_SelectionChanged(object sender, EventArgs e)
    {
        var row = Supplierview.CurrentCell.RowIndex;
        SupplierID.Text = Supplierview.Rows[row].Cells[0].Value.ToString();
        CompanyName.Text = Supplierview.Rows[row].Cells[1].Value.ToString();
        ContactName.Text = Supplierview.Rows[row].Cells[2].Value.ToString();
        ContactNumber.Text = Supplierview.Rows[row].Cells[3].Value.ToString();
        Date.Text = Supplierview.Rows[row].Cells[4].Value.ToString();
        Address.Text = Supplierview.Rows[row].Cells[5].Value.ToString();
        Remarks.Text = Supplierview.Rows[row].Cells[6].Value.ToString();

    }
    private void PurchaseOrder_SelectionChanged(object sender, EventArgs e)
    {
        var row = PurchaseOrder.CurrentCell.RowIndex;
        txt_purchase.Text = PurchaseDeliveries.Rows[row].Cells[0].Value.ToString();
        txt_supplier.Text = PurchaseDeliveries.Rows[row].Cells[1].Value.ToString();
        txt_item.Text = PurchaseDeliveries.Rows[row].Cells[2].Value.ToString();
        txt_date.Text = PurchaseDeliveries.Rows[row].Cells[3].Value.ToString();
        txt_quantity.Text = PurchaseDeliveries.Rows[row].Cells[4].Value.ToString();
        txt_cost.Text = PurchaseDeliveries.Rows[row].Cells[5].Value.ToString();
        txt_amount.Text = PurchaseDeliveries.Rows[row].Cells[6].Value.ToString();
        txt_sales.Text = PurchaseDeliveries.Rows[row].Cells[7].Value.ToString();
        txt_code.Text = PurchaseDeliveries.Rows[row].Cells[8].Value.ToString();
        txt_patient.Text = PurchaseDeliveries.Rows[row].Cells[9].Value.ToString();
    }
    private void PurchaseDeliveries_SelectionChanged(object sender, EventArgs e)
    {
        var row = PurchaseDeliveries.CurrentCell.RowIndex;
        PurchaseID.Text = PurchaseDeliveries.Rows[row].Cells[0].Value.ToString();
        Supplier.Text = PurchaseDeliveries.Rows[row].Cells[1].Value.ToString();
        ItemDescription.Text = PurchaseDeliveries.Rows[row].Cells[2].Value.ToString();
        Dates.Text = PurchaseDeliveries.Rows[row].Cells[3].Value.ToString();
        Quantity.Text = PurchaseDeliveries.Rows[row].Cells[4].Value.ToString();
        Unitcost.Text = PurchaseDeliveries.Rows[row].Cells[5].Value.ToString();
        Amount.Text = PurchaseDeliveries.Rows[row].Cells[6].Value.ToString();
        SalesInvoice.Text = PurchaseDeliveries.Rows[row].Cells[7].Value.ToString();
        Codeitems.Text = PurchaseDeliveries.Rows[row].Cells[8].Value.ToString();
        Patientname.Text = PurchaseDeliveries.Rows[row].Cells[9].Value.ToString();

    }
    private void PurchaseReturn_SelectionChanged(object sender, EventArgs e)
    {
        var row = PurchaseReturn.CurrentCell.RowIndex;
        txt_return.Text = PurchaseReturn.Rows[row].Cells[0].Value.ToString();
        txt_rsupplier.Text = PurchaseReturn.Rows[row].Cells[1].Value.ToString();
        txt_ritem.Text = PurchaseReturn.Rows[row].Cells[2].Value.ToString();
        txt_rmodel.Text = PurchaseReturn.Rows[row].Cells[3].Value.ToString();
        txt_rsrp.Text = PurchaseReturn.Rows[row].Cells[4].Value.ToString();
        txt_rcode.Text = PurchaseReturn.Rows[row].Cells[5].Value.ToString();
        txt_rdate.Text = PurchaseReturn.Rows[row].Cells[6].Value.ToString();
        txt_rremarks.Text = PurchaseReturn.Rows[row].Cells[7].Value.ToString();
    }
}

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Я предлагаю использовать DataBinding для этого, тогда нет кода, необходимого для выполнения действий в вашем образце.
Если вы не хотите использовать привязку данных, вы можете просто использовать частные методы для организации вашего кода.
Например,

#region Supplier Stuff

private void SupplierViewChanged(DataRow row)
{
    SupplierID.Text = row.Cells[0].Value.ToString();
    CompanyName.Text = row.Cells[1].Value.ToString();
    ContactName.Text = row.Cells[2].Value.ToString();
    ContactNumber.Text = row.Cells[3].Value.ToString();
    Date.Text = row.Cells[4].Value.ToString();
    Address.Text = row.Cells[5].Value.ToString();
    Remarks.Text = row.Cells[6].Value.ToString();    
}

// put all other helper methods that deal with Supplier here...

#endregion Supplier Stuff


private void Supplierview_SelectionChanged(object sender, EventArgs e)
{
    SupplierViewChanged(Supplierview.CurrentRow);
}

Это делает ваш код немного более организованным и читаемым, но привязка к данным по-прежнему остается методом, который я бы выбрал

0 голосов
/ 21 сентября 2018

первое можно упростить следующим образом:

private void Supplierview_SelectionChanged(object sender, EventArgs e)
{
    var row = Supplierview.CurrentRow;
    SupplierID.Text = row.Cells[0].Value.ToString();
    CompanyName.Text = row.Cells[1].Value.ToString();
    ContactName.Text = row.Cells[2].Value.ToString();
    ContactNumber.Text = row.Cells[3].Value.ToString();
    Date.Text = row.Cells[4].Value.ToString();
    Address.Text = row.Cells[5].Value.ToString();
    Remarks.Text = row.Cells[6].Value.ToString();
}

второе, я бы рекомендовал использовать коллекцию объектов в качестве источника данных для вашей сетки.Например:

class DataItem{
    public string SupplierID {get;set;}
    public string CompanyName {get;set;}
    .....
}

Supplierview.DataSource = "collection of DataItem"

затем

private void Supplierview_SelectionChanged(object sender, EventArgs e)
{
    var dataItem = dataGridView1.CurrentRow.DataBoundItem as DataItem;
    if (dataItem != null)
    {
        SupplierID.Text = dataItem.SupplierID;
        .....
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...