Здесь идея: пользователь может добавлять элементы, и они заполняются в элементе управления списком. Если у пользователя нет предметов, они не смогут отправить форму. Тем не менее, я добавляю искусственный элемент, когда нет элементов, используя:
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.");
Итак, что является лучшим способом проверить, есть ли какие-либо созданные пользователем элементы в списке?
numItems инициализируется до 0 на обратной стороне, вы не сможете получить значение при нажатии кнопки...
использовать что-то вроде этого
ViewState["count"] = ds.Tables[0].Rows.Count;
и проверьте количество нажатий на кнопку
if(Convert.ToInt32(ViewState["count"]) > 0)
{
// your logic
}
Когда пользователь добавляет элемент, удалите элемент по умолчанию из списка. Затем вместо того, чтобы основывать проверку на количестве элементов с помощью глобального, вы можете затем основывать его на том, существует ли ваш искусственный элемент в списке.