比如在点了按钮之后,禁用datalist页脚中的控件?要在后台啊

解决方案 »

  1.   

    ctype(datalist,table).rows(datalist.items.count).cells(0).findcontrol('controlid'),control).enabled=false
      

  2.   

    ctype(datalist.controls(0),table).rows(datalist.items.count).cells(0).findcontrol('controlid'),control).enabled=false
      

  3.   

    ctype(ctype(datalist.controls(0),table).rows(datalist.items.count).cells(0).findcontrol('controlid'),control).enabled=false
      

  4.   

    忘记告诉你了
    rows(datalist.items.count) 指的是你的页脚的那一行
    如果你有分页,页脚的行好象在
    rows(datalist.items.count+2)
      

  5.   

    我没有分页
    一个页眉,一个页脚,现在代码不提示错误了,但是好象还是不能禁用那个控件
     CType(CType(DataList1.Controls(0), Table).Rows(DataList1.Items.Count).Cells(0).FindControl("RequiredFieldValidator1"), RequiredFieldValidator).Enabled = False没有效果
      

  6.   

    总结一下
    没分页,没HEAD,有FOOTER就是).Rows(DataList1.Items.Count).有HEAD  就是).Rows(DataList1.Items.Count+1).有上分页,或下分页,有HEAD,就是).Rows(DataList1.Items.Count+2).如果有上分和下分页,和HEAD就是).Rows(DataList1.Items.Count+3).好了去试试
      

  7.   

    我加到300,都不会出现索引错误,估计是代码有问题吧
    指定的转换无效。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidCastException: 指定的转换无效。
      

  8.   

    还有一定要在你的DATALIST绑定好了之后才能找的到,不然的话就报错其实还有一种方法就是在
    Private Sub DataList_ItemDataBound(
    中写
    If (e.Item.ItemType = ListItemType.Footer) Then
                CType(e.Item.FindControl("Button9"), Button).Enabled = False
            End If
      

  9.   

    我把代码发给你,你看看<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm37.aspx.vb" Inherits="user.WebForm37"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <title>WebForm37</title>
    <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <asp:DataList id="DataList1" style="Z-INDEX: 101; LEFT: 104px; POSITION: absolute; TOP: 128px"
    runat="server">
    <FooterTemplate>
    <asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
    <asp:Button id="Button1" runat="server" Text="Button"></asp:Button><FONT face="宋体"><BR>
    <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" ErrorMessage="Error" ControlToValidate="TextBox1"></asp:RequiredFieldValidator></FONT>
    </FooterTemplate>
    <ItemTemplate>
    <asp:Label id=Label2 runat="server" Text='<%# databinder.eval(container.dataitem,"Book_ID") %>'>
    </asp:Label>
    </ItemTemplate>
    </asp:DataList>
    <asp:Button id="Button2" style="Z-INDEX: 102; LEFT: 560px; POSITION: absolute; TOP: 256px" runat="server"
    Text="Button"></asp:Button>
    </form>
    </body>
    </HTML>
    Imports System.Data.OleDb
    Public Class WebForm37
        Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 "    '该调用是 Web 窗体设计器所必需的。
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()    End Sub
        Protected WithEvents DataList1 As System.Web.UI.WebControls.DataList
        Protected WithEvents Button2 As System.Web.UI.WebControls.Button    '注意: 以下占位符声明是 Web 窗体设计器所必需的。
        '不要删除或移动它。
        Private designerPlaceholderDeclaration As System.Object    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
            'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
            '不要使用代码编辑器修改它。
            InitializeComponent()
        End Sub#End Region    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
            'Dim mycommand As New OleDbDataAdapter("select * from dataname ", conn)
            Dim conn As New OleDbConnection("Data Source=""" & Me.Server.MapPath(System.Configuration.ConfigurationSettings.AppSettings("database")) & """;Provider=""Microsoft.Jet.OLEDB.4.0"";User ID=Admin")        Dim mycommand As New OleDbDataAdapter("SELECT * form dataname)", conn)
            Dim ds As New DataSet
            mycommand.Fill(ds)
            Me.DataList1.DataSource = ds
            Me.DataBind()
            'CType(CType(DataList1.Controls(0), Table).Rows(DataList1.Items.Count).Cells(0).FindControl("RequiredFieldValidator1"), RequiredFieldValidator).Enabled = False
            'CType(CType(DataList1.Controls(0), Table).Rows(DataList1.Items.Count + 1).Cells(0).FindControl("RequiredFieldValidator1"), RequiredFieldValidator).Enabled = False
            CType(CType(DataList1.Controls(0), Table).Rows(DataList1.Items.Count + 300).Cells(0).FindControl("RequiredFieldValidator1"), RequiredFieldValidator).Enabled = False    End Sub
    End Class救命啊
      

  10.   

    If (e.Item.ItemType = ListItemType.Footer) Then
                CType(e.Item.FindControl("Button9"), Button).Enabled = False
            End If
    这个禁用我知道,不过我的不能这样做
    因为我要的效果是,点击datalist外面的一个button,然后就禁用datalist中的验证控件
      

  11.   

    Me.DataList1.DataSource = ds
         Me.DataList1.DataBind()
      

  12.   

    我把RequiredFieldValidator换成textbox也不行,可能还是代码有问题
      

  13.   

    对不起,是我的错,我没有看清楚,我帮你改一下
    我看错东西了,SORRY
      

  14.   

    ctype(DataList1.controls(datalist1.items.count).findcontrol("RequiredFieldValidator1"),RequiredFieldValidator).enabled=false