【问题标题】:vb.net dropdownlist looses it's datasource on pageload or postbackvb.net 下拉列表在页面加载或回发时丢失其数据源
【发布时间】:2013-08-06 08:41:10
【问题描述】:

按下按钮时下拉列表有问题,有界数据将消失!
我完全不知道为什么会这样!
我还有其他页面也有绑定的下拉列表数据,它工作得很好,但是这个页面在按下按钮后会在页面加载时消失有界内容!
根据要求,这是我的完整 .vb 代码
由于我的文件很大,我将提供这些文件的完整链接
http://www.mediafire.com/view/8v5e5yjkdpg5780/admin_report.aspx.vb
http://www.mediafire.com/view/xlgt7c2v523rsti/admin_report.aspx

提前致谢

【问题讨论】:

  • 为什么你的 DDL2 下拉列表末尾没有结束标签或“/>”?
  • 抱歉忘记添加剩余的了!谢谢和编辑的问题@hallie
  • 我没有看到代码和 html 设置有任何问题。您是否尝试过调试页面或按钮点击代码?
  • @hallie 是的,当我在页面加载的第一处单击按钮时,DDL 上的所有内容都会消失,例如数据绑定、数据源、选定项或选定索引,一切!我不知道为什么会这样。编辑:我尝试使用空按钮代码,但它仍然是一样的!
  • 为什么要在 P 标签上设置 EnableViewState="False" ?

标签: asp.net vb.net drop-down-menu selectedindex


【解决方案1】:

为什么要在 P 标签上设置 EnableViewState="False" ? 尝试从 P 标记中删除 EnableViewState="False"。

【讨论】:

    【解决方案2】:

    试试这个

     <asp:DropDownList ID="DDL2" runat="server" Style="font-size: 12px;
                    color: #0066cc; font-family: Tahoma; direction: rtl;" Width="100px" 
                    AppendDataBoundItems="True" >
    

    删除

      AppendDataBoundItems="True" from above 
    

    【讨论】:

    • 感谢您的重播,它没有改变任何东西,问题仍然存在!还要看看 DDL1 我也有同样的问题,没有 AppendDataBoundItems="True" 我也尝试过 Viewestats 但没有成功。
    【解决方案3】:

    同时添加 ValueField:

    Sub DGDataBind()
        Dim adapter As Data.SqlClient.SqlDataAdapter
        adapter = New Data.SqlClient.SqlDataAdapter("LoadSomething", connection)
        adapter.SelectCommand.CommandType = Data.CommandType.StoredProcedure
        Dim param As New Data.SqlClient.SqlParameter("@something1", Data.SqlDbType.Bit)
        param.Value = 1
        adapter.SelectCommand.Parameters.Add(param)
        param = New Data.SqlClient.SqlParameter("@something2", Data.SqlDbType.Bit)
        param.Value = 0
        adapter.SelectCommand.Parameters.Add(param)
        GlobalVariables.datas.Clear() 'Public Class GlobalVariables Public Shared datas As New Data.DataSet
        adapter.Fill(GlobalVariables.datas)
        DDL1.DataSource = GlobalVariables.datas.Tables(0)
        DDL1.DataTextField = "rptname"
        DDL1.DataValueField = "ColumnName"
        DDL1.DataBind()
        DDL1.Items.Insert(0, New ListItem("empty", "0"))
        DDL1.SelectedIndex = 0
        DDL2.DataSource = GlobalVariables.datas.Tables(0)
        DDL2.DataTextField = "rptname"
        DDL2.DataValueField = "ColumnName"
        DDL2.DataBind()
     End Sub
    

    页面加载应该是这样的:

    If Not IsPostBack Then
    DGDataBind()
    End If
    

    这是代码中的问题: 因为 IsPostBack 是属性而不是方法

    不要使用内联样式,创建一个 css 类然后使用它。如下:

    CSS 代码:

    <style>
    .ddl1
    {
        font-size: 12px;
        color: #0066cc; 
        font-family: Tahoma; 
        direction: rtl;
        width=100px;
    
        }
    </style>
    

    HTML 代码是:

    <asp:DropDownList ID="DDL1" CssClass="ddl1" runat="server">
    </asp:DropDownList>
    

    希望对你有帮助

    【讨论】:

    • 感谢您的回答,但这并没有解决问题,但是您教会了我一些东西,我们可以有不同的值和名称!我真的很感谢,还有其他一些东西 datavaluefield 将自动设置为 datatextfield。
    • 这并没有解决问题,而且 css 代码也没有任何好处 :( 我一无所获!!!!我有另一个页面,这个大师工作得很好,我可以毫无问题地访问选定的绑定值!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多