Golden Basim Ответов: 2

Ссылка на объект, установленная на экземпляр объекта в gridview1.setrowcellvalue


привет,

я пытаюсь установить значение ячейки строки, но эта ошибка появляется в этой строке
//select deafult store
                gridView1.SetRowCellValue(gridView1.FocusedRowHandle, "storeID", BasicVars.DeafulStore);


Сообщение появилось это сказать : Ссылка на объект, установленная на экземпляр объекта
но никаких других подробностей нет:

полный код
private void AddNewRowWithChossedFromSearchLookUpEdit(int CHK_itemID)
{
    if (CHK_itemID == 0) return;
    mrsalesdbEntities DB01 = ConnectionTools.OpenConn();
    var ItemData = DB01.st_items.Find(CHK_itemID);


    //items
    // gridView1.SetRowCellValue(gridView1.FocusedRowHandle, "stitems_ID", SearchBarcode_ItemID_result);
    // searchedSerial = sForm.SearchValue;
    gridView1.AddNewRow();
    int rowHandle = gridView1.FocusedRowHandle;
    decimal taxPercent = 0;
    try
    {
        if (ItemData.stitems_HaveTax == 1)
        {
            taxPercent = ItemData.stitems_TaxValue.Value;
        }
        else { taxPercent = 0; }
    }
    catch
    {
        taxPercent = 0;
    }
    gridView1.SetRowCellValue(gridView1.FocusedRowHandle, "taxp", taxPercent);


        //select deafult store
        gridView1.SetRowCellValue(gridView1.FocusedRowHandle, "storeID", BasicVars.DeafulStore);

        //select Smallest Unit
        var DB02 = ConnectionTools.OpenConn();
    var UnitItemData = LoadedUnits.Where(u => u.stitems_ID == CHK_itemID).OrderBy(o => o.stitemsu_UnitNum).FirstOrDefault();
    gridView1.SetRowCellValue(gridView1.FocusedRowHandle, "unit_ID", UnitItemData.stitemsu_ID);

    //qnty = 1
    gridView1.SetRowCellValue(gridView1.FocusedRowHandle, "sitem_Quantity", 1);
    // call function to Get the selected unit details ( price , discount , bounce)
    if (gridView1.GetFocusedRowCellValue("stitems_ID") != null || gridView1.GetFocusedRowCellValue("unit_ID") != null ||
           gridView1.GetFocusedRowCellValue("sitem_Quantity") != null)
    {
        int UnitID = Convert.ToInt32(gridView1.GetFocusedRowCellValue("unit_ID"));
        GetUnitDetails(UnitID);
        GetBounce(UnitID);
    }

    int StoreID = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "storeID"));
    int itemID = CHK_itemID;
    try
    {

        //get all avaliable Expired Date
        ExpiredDateCombo.Items.Clear();
        if (ItemData.stitems_Type.Value == 0)
        {
            var DB0201 = ConnectionTools.OpenConn();
            var EXdates = DB0201.stock_noserials.Where(u => u.stitems_ID == CHK_itemID && u.StoreID == StoreID && u.StockQnty > 0).OrderBy(o => o.ExpireDate).ToList();
            foreach (var d in EXdates)
            {
                ExpiredDateCombo.Items.Add(d.ExpireDate.Value.ToString("yyyy-MM-dd"));
            }
            gridView1.SetRowCellValue(gridView1.FocusedRowHandle, "ExpiredDate", EXdates.FirstOrDefault().ExpireDate.Value.ToString("yyyy-MM-dd"));
            gridView1.SetRowCellValue(gridView1.FocusedRowHandle, "BatchNum", EXdates.FirstOrDefault().BatchNum.ToString());

        }
        else if (ItemData.stitems_Type.Value == 1)
        {
            var DB0201 = ConnectionTools.OpenConn();
            var EXdates = DB0201.purchases_item_seriels.Where(u => (u.stitems_ID == CHK_itemID && u.ss_StoreID == StoreID && u.pis_Statues == 0) ||
                                                                    (u.stitems_ID == CHK_itemID && u.ss_StoreID == StoreID && u.pis_Statues == 5) ||
                                                                    (u.stitems_ID == CHK_itemID && u.ss_StoreID == StoreID && u.pis_Statues == 6)).OrderBy(o => o.pis_ExpireDate).ToList();
            foreach (var d in EXdates)
            {
                ExpiredDateCombo.Items.Add(d.pis_ExpireDate.Value.ToString("yyyy-MM-dd"));
            }
            gridView1.SetRowCellValue(gridView1.FocusedRowHandle, "ExpiredDate", EXdates.FirstOrDefault().pis_ExpireDate.Value.ToString("yyyy-MM-dd"));
            gridView1.SetRowCellValue(gridView1.FocusedRowHandle, "BatchNum", EXdates.FirstOrDefault().BatchNum.ToString());
        }
    }
    catch {

    }
    // Validate all row cells
    gridView1.ClearColumnErrors();
    PathingVars.RowValid = 1;
    ClearValidationsErrs = 0;

    gridView1.PostEditor();
    gridView1.UpdateCurrentRow();
    gridView1.FocusedRowHandle = gridView1.DataRowCount - 1;
    gridView1.FocusedColumn = gridView1.Columns["sitem_NetPrice"];

}


Что я уже пробовал:

я попытался написать эту строку между try и catch, чтобы увидеть детали ошибки, но msg не появилось.

try
{

    //select deafult store
    gridView1.SetRowCellValue(gridView1.FocusedRowHandle, "storeID", BasicVars.DeafulStore);
}
catch (Exception exxxxx) { MessageBox.Show(exxxxx.ToString()); }


пожалуйста, обратите внимание, что "поле storeid"есть ли колонка в управления gridview1 и , BasicVars.DeafulStore имейте значение "1", а не null.

ZurdoDev

Это очень просто исправить, и только вы можете это сделать, потому что мы не можем запустить ваш код. Сначала определите конкретную строку кода, которая вызывает ошибку, затем поместите на нее точку останова и проверьте, что является нулевым.

Простой.

Golden Basim

я сделал это , линия

gridView1.SetRowCellValue(gridView1.FocusedRowHandle, "storeID", BasicVars.DeafulStore);
и нет никакого нулевого объекта

ZurdoDev

Что-то есть, иначе вы не получили бы эту ошибку.

В чем заключается значение управления gridview1.Сфокусированная рука?
А что такое BasicVars.DeafulStore?
И вы уверены, что есть поле с именем "storeID". Это может быть чувствительно к регистру.

Golden Basim

управления gridview1.FocusedRowHandle = 0 , BasicVars.DeafulStore = 1 ,storeID-правильный.

ZurdoDev

Вы уверены, что именно эта строка вызывает ошибку?

2 Ответов

Рейтинг:
9

Golden Basim

спасибо , я нашел решение ..

установив GridView в использование значения ячейки управления gridview1.SetRowCellValue это поднимает другие события, такие как gridView1_CellValueChanged и gridView1_ValidateRow и другие. я проверил каждое событие и получил нулевую переменную.

спасибо


Рейтинг:
1

Wendelius

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

Если вы не прошли через основные операции, взгляните на Первый взгляд на отладчик - Visual Studio | Microsoft Docs[^]

Одним из очень хороших инструментов является QuickWatch окно: Watch and QuickWatch Windows - Visual Studio 2015 | Microsoft Docs[^]

Вы можете поместить всю постановку задачи в QuickWatch, и вы увидите, если возникнет исключение. Кроме того, вы можете изменить оператор, чтобы увидеть, что такое null и какие модификации помогают в решении проблемы.