【问题标题】:Can't find Hyperlink control in DataGrid在 DataGrid 中找不到超链接控件
【发布时间】:2011-12-01 21:31:39
【问题描述】:

我需要在页面加载时根据特定条件在我的每一行中禁用<asp:HyperLink>。 到目前为止,我没有任何运气......

    For i As Integer = 0 To CourseData.Tables(0).Rows.Count - 1
        If CourseData.Tables(0).Rows(i)("completedyn") = "yes" Then
            CourseData.Tables(0).Rows(i)("completedyn") = "Complete"
        Else
            CourseData.Tables(0).Rows(i)("completedyn") = "Incomplete"
        End If
    Next

    grdCourses.DataSource = CourseData
    grdCourses.DataBind()

    For i As Integer = 0 To grdCourses.Items.Count - 1
        If grdCourses.FindControl("hypEnter") IsNot Nothing Then
            Dim hypEnter As HyperLink = CType(grdCourses.FindControl("hypEnter"), HyperLink)

            If CourseData.Tables(0).Rows(i)("completedyn") = "Incomplete" Then
                hypEnter.Enabled = False
            End If
        End If
    Next


    <asp:DataGrid runat="server" ID="grdCourses">
        <Columns>
            <asp:BoundColumn DataField="modulename" HeaderText="Module Name"></asp:BoundColumn>
            <asp:BoundColumn DataField="completedyn" HeaderText="Status"></asp:BoundColumn>
            <asp:BoundColumn DataField="completeddate" HeaderText="Date Completed"></asp:BoundColumn>
            <asp:TemplateColumn>
                <ItemTemplate>
                    <asp:HyperLink runat="server" ID="hypEnter" Text="View Module" NavigateUrl='<%# "View.aspx?mod=" + Eval("moduleid").ToString()%>'></asp:HyperLink>
                </ItemTemplate>
            </asp:TemplateColumn>
        </Columns>
    </asp:DataGrid>

FindControl() 方法永远不会改变。 任何帮助将不胜感激

【问题讨论】:

    标签: asp.net vb.net datagrid


    【解决方案1】:

    您似乎走在了正确的道路上,但您没有查看每一行。我的 VB.net 生锈了,但我相信您想在循环中的几个地方添加 .Items(i):

    For i As Integer = 0 To grdCourses.Items.Count - 1
        If grdCourses.Rows(i).FindControl("hypEnter") IsNot Nothing Then
            Dim hypEnter As HyperLink = CType(grdCourses.Rows(i).FindControl("hypEnter"), HyperLink)
    
            If CourseData.Tables(0).Rows(i)("completedyn") = "Incomplete" Then
                hypEnter.Enabled = False
            End If
        End If
    Next
    

    【讨论】:

    • 你说对了一半,我错过了每一行。正确的语法应该是 grdCourses.Rows(i).FindControl("hypEnter") ...由于某种原因,VS2010E 似乎缺少 .Rows() 属性,这就是我非常卡住的原因。无论如何都标记为答案,感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 2012-05-31
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 2011-08-16
    相关资源
    最近更新 更多