TarunKumarSusarapu Ответов: 2

Как присвоить значение empty, когда строка имеет значение null в C#


Я взял параметры для команды и назначил строки gridview в качестве значений.Когда строка представления сетки равна нулю, она показывает ошибку "ССЫЛКА на объект не установлена на экземпляр".Я знаю,как присваивать значения с помощью переменной в блоке try.Но я хочу отдавать вот так.Существует ли какой-либо метод преобразования этих значений в пустые строки в C#?

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

cmdTemp.Parameters.AddWithValue("@comment_NAME30", row.Cells[0].Value.ToString());
cmdTemp.Parameters.AddWithValue("PRODUCT_NO", row.Cells[1].Value.ToString());
cmdTemp.Parameters.AddWithValue("@PRODUCT_NAME", row.Cells[2].Value.ToString());
cmdTemp.Parameters.AddWithValue("@QTY", row.Cells[3].Value.ToString());
cmdTemp.Parameters.AddWithValue("@UOM", row.Cells[4].Value.ToString());
cmdTemp.Parameters.AddWithValue("@PRICE", row.Cells[5].Value.ToString());
cmdTemp.Parameters.AddWithValue("@ITEM1_NO", row.Cells[6].Value.ToString());
cmdTemp.Parameters.AddWithValue("@DISCOUNT_PC", row.Cells[7].Value.ToString());
cmdTemp.Parameters.AddWithValue("@AMOUNT", row.Cells[8].Value.ToString());
cmdTemp.Parameters.AddWithValue("@SC_NO", row.Cells[10].Value.ToString());
cmdTemp.Parameters.AddWithValue("@GL_CODE", row.Cells[11].Value.ToString());
cmdTemp.Parameters.AddWithValue("@PROJ_NO", row.Cells[12].Value.ToString());
cmdTemp.Parameters.AddWithValue("@Gp_NO", row.Cells[13].Value.ToString());
cmdTemp.Parameters.AddWithValue("@WH_NO", row.Cells[14].Value.ToString());
cmdTemp.Parameters.AddWithValue("@Sales_exempt", row.Cells[15].Value.ToString());
cmdTemp.Parameters.AddWithValue("@FACTOR", row.Cells[16].Value.ToString());
cmdTemp.Parameters.AddWithValue("@Category", row.Cells[18].Value.ToString());
cmdTemp.Parameters.AddWithValue("@IMPORTED_FROM_NO", row.Cells[19].Value.ToString());
cmdTemp.Parameters.AddWithValue("@IMPORTED_FROM", row.Cells[20].Value.ToString());
cmdTemp.Parameters.AddWithValue("@GST_Amt", row.Cells[23].Value.ToString());
cmdTemp.Parameters.AddWithValue("@DISCOUNT_PC_2", row.Cells[24].Value.ToString());
cmdTemp.Parameters.AddWithValue("@Ref_No", row.Cells[25].Value.ToString());
cmdTemp.Parameters.AddWithValue("@GL_DESC", row.Cells[27].Value.ToString());
cmdTemp.Parameters.AddWithValue("@PRODUCT_NAME_LONG", cfs.singlequotconver(strdesc));
cmdTemp.Parameters.AddWithValue("@CREATED_BY", uid.ToString());
cmdTemp.Parameters.AddWithValue("@DATE_CREATED", cfs.sqldateconverion());
cmdTemp.Parameters.AddWithValue("@Deleted", "False");
cmdTemp.Parameters.AddWithValue("@INV_NO", ddl_Inv.Text);
cmdTemp.Parameters.AddWithValue("@Transfer", "U");
cmdTemp.Parameters.AddWithValue("@TICK", "C");
cmdTemp.Parameters.AddWithValue("@ID", strInvId);
cmdTemp.Parameters.AddWithValue("@AC_NO", cfs.singlequotconver(txt_Custcode.Text));
cmdTemp.Parameters.AddWithValue("@AC_NAME", cfs.singlequotconver(txt_Cus_Name.Text));
cmdTemp.Parameters.AddWithValue("@ITEM10", cfs.singlequotconver(LineNo));
cmdTemp.Parameters.AddWithValue("@invNo_user", ddl_Inv.Text + uid.ToString());
cmdTemp.Parameters.AddWithValue("@AVERAGE_COST", cfs.get_data("select distinct AVERAGE_COST from PRODUCT where PRODUCT_NO='" + strpcode + "'"));
cmdTemp.Parameters.AddWithValue("@LP_COST", cfs.get_data("select distinct LP_COST from PRODUCT where PRODUCT_NO='" + strpcode + "'"));
cmdTemp.Parameters.AddWithValue("@STD_COST", cfs.get_data("select distinct STD_COST from PRODUCT where PRODUCT_NO='" + strpcode + "'"));
cmdTemp.Parameters.AddWithValue("@QTY_UNFILLED", strqtyfilled);
cmdTemp.Parameters.AddWithValue("@DATETIME", cfs.sqldateconverion(txt_trans_Date.Value));
cmdTemp.Parameters.AddWithValue("@Batch_No", batchno);
cmdTemp.Parameters.AddWithValue("@Expiry_Date", Expirydate);
cmdTemp.Parameters.AddWithValue("@PRINT_ITEM", printitem);
cmdTemp.Parameters.AddWithValue("@QTY_BILLED", Prodqty);
cmdTemp.Parameters.AddWithValue("@ITEM6_NO", Prodqty);
cmdTemp.Parameters.AddWithValue("@ITEM7_NO", pri);
cmdTemp.Parameters.AddWithValue("@ITEM8_NO", net);

2 Ответов

Рейтинг:
0

Midi_Mick

Новое ?? оператор доступен для этого типа операции. Если значение слева равно null, то оно вернет значение справа. Существует также аналогичный оператор?., который не вызывает свойство справа, если значение слева равно null, а вместо этого возвращает null.

Итак, если вы уверены, что входная переменная является строкой, вы можете просто передать

string result = value ?? "";

Если это объект неизвестного типа
string result = value?.ToString() ?? "";


Рейтинг:
0

OriginalGriff

Используйте нуль-коалесцирующий оператора:

private string AlwaysAString(object o)
    {
    return o.ToString() ?? "";
    }

[править] Ба! Нет, это вызовет исключение нулевой ссылки...
private string AlwaysAString(object o)
    {
    if (o != null) return o.ToString();
    return "";
    }

[/редактировать]
Тогда просто позвони:
cmdTemp.Parameters.AddWithValue("@comment_NAME30", AlwaysAString(row.Cells[0]));