2013-10-09 2 views
0

Этот код кажется достаточно простым на поверхности, но я пытаюсь отобразить сообщение, когда в datalist нет записей.Как отобразить «Нет записей» в datalist?

У меня есть это на разметке:

<asp:DataList ID="DataList1" runat="server" CellPadding="4" 
    DataSourceID="SqlDataSource1" 
    Font-Bold="False" OnSelected="SqlDataSource1_Selected" Font-Names="Verdana" 
    Font-Size="Small" RepeatColumns="2" 
    RepeatDirection="Horizontal" Width="100%" ForeColor="#333333"> 
    <AlternatingItemStyle BackColor="White" ForeColor="#284775" /> 
... 
... 
</asp:DataList> 
<asp:label CssClass="Treb10Blue" ID="lblMsg" runat="server"></asp:Label> 

Тогда на коде, у меня есть это:

Protected Sub SqlDataSource1_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlDataSource1.Selected 

    If e.AffectedRows = 0 Then 
     lblMsg.Visible = True 
     lblMsg.Text = "No records found" 
    Else 
     lblMsg.Text = "" 
    End If 

End Sub 

Я не получаю никаких ошибок, но сообщение не отображается.

Любые идеи, что может быть неправильным?

+0

Смотрите этот [вопрос] (http://stackoverflow.com/questions/2756466/need-to-show-a-message-when-datalist-is-empty), которые могли бы помочь вам –

+0

Что * является * значение "e.AffectedRows"? – jadarnel27

ответ

1

Эта проблема решена. Это намного проще, чем я мог себе представить.

<FooterTemplate> 
    <asp:Label forecolor="#9ACD32" Visible='<%# IIF(DataList1.Items.Count=0 And ddlLocation.SelectedItem.Value<>"0", "True", "False")%>' runat="server" ID="lblMsg" Text="No records found"></asp:Label> 
    </FooterTemplate> 
0

Это отрывок из MSDN, может быть, это то, что вы видите:

Все операции возвращают количество строк, задействованных в операции. Свойство AffectedRows имеет то же значение, что и возвращаемое значение методов Update, Insert и Delete.

Когда Выбрать метод вызываются и источник данных установлен в режиме DataReader, возвращаемого значения во всех случаях 0.

Если это так, то, может быть, вы можете обратить свою логику:

  • по умолчанию отображает метку с «записей не найдено»
  • создать обработчик события в DataList в ItemDataBound , и спрячьте там ярлык (потому что в этом случае у вас есть хотя бы одна запись)
0

Возможно, вы захотите проверить количество элементов в вашем DataList. Попробуйте следующее:

Protected Sub SqlDataSource1_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlDataSource1.Selected 

    If DataList1.Items.Count = 0 Then 
     lblMsg.Visible = True 
     lblMsg.Text = "No records found" 
    Else 
     lblMsg.Text = "" 
    End If 

End Sub 
+0

Как я могу связать ваше решение с элементом управления dropdownlist? Это работает, вроде. Отображает это сообщение, есть ли значение или нет. Итак, у нас есть элемент управления dropdownlist с 4 вариантами. Возможно, если я могу привязать его к элементу управления dropdownlist, тогда, если значение для раскрывающегося списка равно 0, тогда отобразите сообщение. Вы можете помочь с этим? – Kenny

+0

Свяжите его с тем, что называется выпадающим списком. –

+0

Я спросил, не могли бы вы помочь? Это означает, что я не знаю, как это сделать. Это нормально, если вы не знаете, как себя, но это был не ответ. – Kenny

Смежные вопросы