Условная Логика на странице ASP.net

Простейший способ:

df = df.merge(df.groupby("id1").id2.min().reset_index())
8
задан Vidar 15 December 2008 в 14:40
поделиться

4 ответа

Это будет довольно субъективным это, поскольку это полностью зависит от того, где и как Вам нравится обрабатывать пустой указатель / пустые значения, и действительно с каким из тех двух Вы имеете дело.

Например, некоторым нравится обрабатывать, аннулирует на уровне базы данных, некоторым нравится кодировать значения по умолчанию в слое бизнес-логики, и другим нравится обрабатывать значение по умолчанию / пустые значения в UI - не говоря уже об изобилии промежуточных опций.

Так или иначе мой личный выбор состоял бы в том, чтобы удостовериться, что Вы отображаетесь, те никакие данные не были доступны для того поля на уровне UI для предотвращения беспорядка. В худшем случае что-то вроде:

<strong><% If (Eval("Address2").Length > 0) Then %><%#Eval("Address2")%><% Else %>No data available for Address 2<% End If %></strong><br />

Тот путь, по крайней мере, пользователь знает, что никакие данные не доступны, а не не знающий, была ли некоторая система / административная ошибка.

Надежда, которая помогает :)

6
ответ дан 5 December 2019 в 09:26
поделиться

Я предлагаю перенести каждую пару ключ/значение в пользовательский элемент управления с 2 свойствами. Это управление отобразит себя, только если значение не пусто:

 <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ShowPair.ascx.cs" Inherits="MyWA.ShowPair" %>

<% if (!string.IsNullOrEmpty(Value))
   { %>
<%=Key %> : <%=Value %>
<% } %> 

И затем помещенные средства управления в шаблон повторителя:

<asp:Repeater runat='server' ID="repeater1">
     <ItemTemplate>
        <cst:ShowPair Key="Company Name:" Value="<%#((Company)Container.DataItem).CompanyName %>" runat="server"/>
        <cst:ShowPair Key="Contact Name:" Value="<%#((Company)Container.DataItem).ContactName %>" runat="server" />
        <cst:ShowPair Key="Address 1:" Value="<%#((Company)Container.DataItem).Address1 %>" runat="server" />
     </ItemTemplate>
    </asp:Repeater>
8
ответ дан 5 December 2019 в 09:26
поделиться

Существуют, может способы сделать это, я обычно использую событие события OnItemDataBound повторителя, которое происходит, когда объект повторителя связывается с элементом данных.

Для объяснения события OnItemDataBound позволяют нам предположить, что у нас есть повторитель с одним полем, которое всегда отображается (Имя) и дополнительное поле, которое отображено, если не пустое (дополнительно). Далее больше мы хотим отобразить некоторое предопределенное значение, если дополнительное поле является пустым или пустым.
Чтобы сделать это, мы должны сначала установить событие OnItemDataBound повторителя, чтобы указать на метод И также создать шаблон объекта повторителя. Мы могли использовать любое управление сервером в шаблоне объекта повторителя, на который мы можем сослаться позже в методе OnItemDataBound.

<asp:Repeater ID="repeaterResults" runat="server"   OnItemDataBound="repeaterResult_ItemDataDataBound">
    <ItemTemplate>
    <strong><%#Eval("Name") %></strong>
    <asp:Literal runat="server" ID="ltlOption" />
    <br />
    </ItemTemplate></asp:Repeater>

Далее давайте предположим, что мы свяжем набор простых объектов, которые имеют два свойства: Имени и Опции нравится, следует:

public class SimpleEntity
{
    public string Name {get;set;}
    public string Option {get;set;}
}

Затем мы реализуем repeaterResult_ItemDataDataBound метод следующим образом:

protected void repeaterResult_ItemDataDataBound(object sender, RepeaterItemEventArgs e)
{
  SimpleEntity ent = e.Item.DataItem as SimpleEntity;
  Literal ltlOption = e.Item.FindControl("ltlOption") as Literal;
  if (ent != null && ltlOption != null)
  {
     if (!string.IsNullOrEmpty(ent.Option))
     {
        ltlOption.Text = ent.Option;
     }
     else
     {
        ltlOption.Text = "Not entered!";
     }

  }
}

Поскольку метод выше реализован, мы отобразим дополнительное поле, если будет существовать, в то время как, если дополнительное поле является пустой или пустой строкой, мы отобразим предопределенную строку, "Не вводимую!".

3
ответ дан 5 December 2019 в 09:26
поделиться

Можно использовать IsDBNull (obj)

If IsDbNull(<%#Eval("Address2")%>) then
     etc
End If
1
ответ дан 5 December 2019 в 09:26
поделиться
Другие вопросы по тегам:

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