2013-04-16 5 views
0

Я хотел бы скрыть элемент управления viewview при загрузке страницы, где значение элемента управления равно 0. Связи Detailview с базой данных sql и отображаемым значением является числовым значением с нуля вверх.ASP VB.net на странице load hide details view основанный на его значении

Я имею установку элемента управления следующим образом:

<asp:DetailsView Height="25px" Width="60px" ID="dv2cG" runat="server" AutoGenerateRows="False" DataSourceID="ds2cG" BorderWidth="0px" HorizontalAlign="Center" BackColor="#ccd0ff" > 
    <Fields> 
     <asp:BoundField showheader="false" DataField="2cG" HeaderText="2cG" ReadOnly="True" SortExpression="2cG" /> 
    </Fields> 
</asp:DetailsView> 

<asp:SqlDataSource ID="ds2cG" runat="server" ConnectionString="<%$ ConnectionStrings:MaltingsConnectionString %>" SelectCommand="select sum(case when (name = 'English' and ks2en = '2c' and result like 'G') or (name = 'Mathematics' and ks2ma = '2c' and result like 'G') or (not name = 'Mathematics' and not name = 'English' and ks2av = '2c' and result like 'G') then 1 else 0 end) as '2cG' from student join subject on student.upn=subject.upn where @TeachingGroup = 'Select All' AND ([StuYear] = @StuYear) AND ([DataCollection] = @DataCollection) AND ([Name] = @SubjectName) OR @TeachingGroup &lt;&gt; 'Select All' AND ([StuYear] = @StuYear) AND ([DataCollection] = @DataCollection) AND ([Name] = @SubjectName) AND ([TeachingGroup] = @TeachingGroup)"> 

<SelectParameters> 
    <asp:ControlParameter ControlID="DdlTeachingGroup" Name="TeachingGroup" PropertyName="SelectedValue" /> 
    <asp:ControlParameter ControlID="DdlYear" Name="StuYear" PropertyName="SelectedValue" /> 
    <asp:ControlParameter ControlID="ddlDataCollection" Name="DataCollection" PropertyName="SelectedValue" /> 
    <asp:ControlParameter ControlID="DdlSubject" Name="SubjectName" PropertyName="SelectedValue" /> 
</SelectParameters> 

Я написал следующую простую процедуру:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    'G column - sets dataitem to visible false where the dataitem equal 0 
    If dv2cG.DataItem = 0 Then 
     dv2cG.Visible = False 
    Else 
     dv2cG.Visible = True 
    End If 

End Sub 

Это успешно скрывает DetailsView. Однако он делает это, даже если значение в контроле не равно 1.

Спасибо за чтение.

ответ

0

Я решил это, споткнувшись об этом сообщении here.

Я использовал функцию nullif() для команды sql, например.

select nullif(sum(case when.....then 1 else 0 end),0) as '2cG'