Почему счет не точен?

1

Здесь идея: пользователь может добавлять элементы, и они заполняются в элементе управления списком. Если у пользователя нет предметов, они не смогут отправить форму. Тем не менее, я добавляю искусственный элемент, когда нет элементов, используя:

if (ds.Tables[0].Rows.Count == 0)
{
    lstItems.Items.Insert(0, "No items have been added.");
}
else
{
    lstItems.DataSource = ds;
    lstItems.DataTextField = "ItemInfo";
    lstItems.DataValueField = "Item_ID";
    lstItems.DataBind();
}

Позже я хочу обеспечить наличие элементов перед отправкой, но DataSet (ds) недоступен в этой функции/контексте. Чтобы решить эту проблему, я объявил глобальную переменную (public int) внутри класса, на которую можно ссылаться:

public int numItems = 0;

Затем установите его так:

numItems = ds.Tables[0].Rows.Count;

Таким образом, это не будет сбрасываться одной искусственной записью, которую я вставил в lstItems. Однако это не работает. Значение остается 0, даже если вы считаете, что приведенный выше условный оператор правильно оценивает, что количество строк не равно 0. Что я делаю неправильно? Есть ли лучший способ сделать это? Я решил использовать:

if (lstItems.Items.Count < 1)
{
    // allow submission
}

Но проблема в том, что он ударяет по моему искусственному предмету:

lstItems.Items.Insert(0, "No items have been added.");

Итак, что является лучшим способом проверить, есть ли какие-либо созданные пользователем элементы в списке?

  • 0
    На каком событии страницы это происходит?
  • 0
    @ ps2goat происходит внутри метода для заполнения элементов, который вызывается внутри page_load после проверки того, что страница не является обратной передачей.
Теги:
asp.net-4.0

2 ответа

2
Лучший ответ

numItems инициализируется до 0 на обратной стороне, вы не сможете получить значение при нажатии кнопки...

использовать что-то вроде этого

ViewState["count"] =  ds.Tables[0].Rows.Count;

и проверьте количество нажатий на кнопку

if(Convert.ToInt32(ViewState["count"]) > 0)
{
// your logic
}
  • 0
    Это сработало, спасибо!
0

Когда пользователь добавляет элемент, удалите элемент по умолчанию из списка. Затем вместо того, чтобы основывать проверку на количестве элементов с помощью глобального, вы можете затем основывать его на том, существует ли ваш искусственный элемент в списке.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню