Как проверить на Пустой Gridview

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

Пример:

Start Date End Date Result
28/1/19    1/3/19   1 month and 1 day
29/1/19    1/3/19   1 month and 1 day
30/1/19    1/3/19   1 month and 1 day
31/1/19    1/3/19   1 month and 1 day

Если вы примете это, то следующие формулы должны работать:

Год

=datedif(A1,B1,"Y")

Месяц

=mod(datedif(A1,B1,"m"),12)

[ 1119] День

=IF(DAY(B1)>=DAY(A1),DAY(B1)-DAY(A1),DAY(EOMONTH(B1,-1))+DAY(B1)-MIN(DAY(A1),DAY(EOMONTH(B1,-1))))

enter image description here

РЕДАКТИРОВАТЬ

* Проверено это на [118 ] этот веб-сайт и обнаружил, что он делает то же самое предположение - вы получаете такую ​​же продолжительность (1 месяц и один день) с 28/1/19 по 1/3/19, как с 31/1/19 по 1/3 / 19, хотя общее количество дней (32 или 29) отличается.

Возможный обходной путь - взять дни, оставшиеся в начальном месяце

=IF(DAY(B1)>=DAY(A1),DAY(B1)-DAY(A1),DAY(EOMONTH(A1,0))-DAY(A1)+DAY(B1))

, что, кажется, согласуется с этим веб-сайтом

Вы также можете использовать аргумент MD Datedif:

=datedif(A1,B1,"MD")

Но как в Google Sheets, так и в Excel это может привести к отрицательному числу, как указано в документации Excel :

The "MD" argument may result in a negative number, a zero, or an inaccurate result. If you are trying to calculate the remaining days after the last completed month...

enter image description here [+1127]

15
задан zohair 8 April 2009 в 19:28
поделиться

4 ответа

Ваш код должен работать. Но только после того, как GridView.DataBind () был вызван. Как правило, я не проверяю GridView сам, но источник данных вида сетки.

DataTable data = DAL.getdata();
if (data.Rows.Count == 0)
{
    ShowEmptyData();
}
else
{
    Grid.DataSource = dt;
    Grid.DataBind();
}
22
ответ дан 1 December 2019 в 00:11
поделиться

Это не работает, так как GridView привязан к данным и собирается получить фактическую данные в более позднее время при отображении страницы. Вы должны проверить это, напрямую запросив источник привязки данных в виде сетки (посмотрите, является ли фактический список, к которому привязано представление сетки, пустым или нет).

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

<asp:GridView runat="server">
<EmptyDataTemplate>The grid is empty</EmptyDataTemplate>
</asp:GridView>
19
ответ дан 1 December 2019 в 00:11
поделиться

Я согласен с другими ответами. Я хочу добавить немного информации, вы должны получить rows.count после метода привязки данных:

int rowCount = GridView.Rows.Count; // returns zero

GridView.DataBind();

rowCount = GridView.Rows.Count; // returns actual row count
8
ответ дан 1 December 2019 в 00:11
поделиться

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

4
ответ дан 1 December 2019 в 00:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: