根据列值asp repeater / gridview显示行

时间:2015-10-13 13:05:30

标签: asp.net vb.net gridview data-binding repeater

我正在使用 VB.NET

我得到一个包含以下列的数据表

    <chartingToolkit:Chart Grid.RowSpan="2" Name="GrapherChart">

        <chartingToolkit:Chart.Axes>
            <chartingToolkit:LinearAxis Orientation="X" Interval="50" Minimum="{Binding Xmin}" Maximum="{Binding Xmax}" FontSize="10" Title="Phase"/>
            <chartingToolkit:LinearAxis Orientation="Y" Interval="500" Minimum="{Binding Ymin}" Maximum="{Binding Ymax}" FontSize="10" ShowGridLines="True" Title="Amplitude"/>
        </chartingToolkit:Chart.Axes>

        <chartingToolkit:ScatterSeries
            DependentValuePath="Amplitude"
            IndependentValuePath="PhaseAngle"
            ItemsSource="{Binding Data}">
            <chartingToolkit:ScatterSeries.DataPointStyle>
                <Style TargetType="chartingToolkit:ScatterDataPoint">
                    <Setter Property="Background" Value="{Binding Colour}"></Setter>
                </Style>
            </chartingToolkit:ScatterSeries.DataPointStyle>
        </chartingToolkit:ScatterSeries>

        <chartingToolkit:Chart.LegendStyle>
            <Style TargetType="Control">
                <Setter Property="Width" Value="0"/>
                <Setter Property="Height" Value="0"/>
            </Style>
        </chartingToolkit:Chart.LegendStyle>
    </chartingToolkit:Chart>

计数为ID DESC Hyperlink COUNT 0

如果计数为1我需要做

0

在超链接列

我没有对databind事件做任何显式操作。 我填充转发器的方式是:

NavigateUrl='<%#"~/Create.aspx?ID=" + Eval("ID")%>' Text="Create"

当前函数只是获取一个sql表

rptrTask.DataSource = PpltDefGrid(Trim(v))

有人可以给我内联代码如何做到这一点?如果不知道我怎么能通过背后的代码这样做(请举例)?我尝试过一些/ Container.data方法..但是没有成功。真的很感激任何帮助。

3 个答案:

答案 0 :(得分:0)

您可以在后面的代码中使用gridview的RowDatBound()事件。

 protected void rptrTask_RowDataBound(object sender, GridViewRowEventArgs e) {
        if (e.Row.RowType == DataControlRowType.DataRow) {
            HyperLink hl = (HyperLink)e.Row.FindControl("hyperlinkID");
            if(DataBinder.Eval(e.Row.DataItem, "COUNT") == "0")
            {
            hl.NavigateUrl = "~/Create.aspx?ID=" + DataBinder.Eval(e.Row.DataItem, "ID");
            }
        }
    }

答案 1 :(得分:0)

我将逻辑提取到变量(bShowURl)以增强可控性。还会进行额外检查以确保超链接存在。

Protected Sub yourGridview_RowDataBound(sender As Object, e As GridViewRowEventArgs)

        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim currentDataItem As yourDataItemDataType = e.Row.DataItem
            Dim bShowUrl = IIF(currentDataItem.ID = 0, True, False)

            If bShowUrl Then
                Dim hyperlink As HyperLink = CType(e.Row.FindControl("yourHyperlinkControlId"), HyperLink) 
                If hyperlink IsNot Nothing Then
                    hyperlink.NavigateUrl = "~/Create.aspx?ID=" + currentDataItem.ID.ToString()
                End If
            End If
        End If

End Sub

答案 2 :(得分:0)

我正在编辑我的答案,那么在这种情况下RowDataBound对你来说很容易。

像这样修改你的GridView: -

 <asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound">

我添加了"OnRowDataBound="GridView1_RowDataBound"

在.aspx页面中,您可以为hyperlink

这样写
<asp:TemplateField HeaderText="Count">
    <ItemTemplate>
      <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="#" Text='<%#Eval("ID") %>'></asp:HyperLink>
   </ItemTemplate>
</asp:TemplateField>

在.aspx.vb页面中,这样写: -

Protected Sub GridView1_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim HyperLink1 As HyperLink = DirectCast(e.Row.FindControl("HyperLink1"), HyperLink)
            If DataBinder.Eval(e.Row.DataItem, "COUNT") = "0" Then
                HyperLink1.NavigateUrl = "~/Create.aspx?ID=" + DataBinder.Eval(e.Row.DataItem, "ID")
            End If
        End If
    End Sub

希望得到这个帮助。