2010-09-08 74 views
2

编辑:更多的代码如何让我的下拉列表默认为第一行名称表

Dim oControl As New Forms.Control() 

          Using types As New DataSet 
           With oDal 
            .Parameters.Clear() 
            .Execute(sql, types) 
           End With 
           With ddlType 
            .DataSource = types.Tables(0) 
            .DataTextField = "Name" 
            .DataValueField = "TypeId" 
            .Items.Clear() 
            .DataBind() 
            If .Items.Count > 0 Then 
             .SelectedIndex = 0 
            End If 
           End With 

          End Using 
          'set queue type with our asp:dropdownlist control 
          oControl = New Forms.Control(Forms.Control.ControlType.ComboBox) 
          'we need to connect the two controls 
          oControl.Id = ddlType.ID 

          'add it to the grid 
          With .Columns.Add("CredentialTypeId", "Type", 85) 
           .Editor = oControl 
          End With 

出于某种原因,当你点击下拉 - “0”显示拖欠。它需要是表格中的第一个文本/值对。该表仅在此时返回一行,这是正确的,但0仍然是默认值。

任何人都知道为什么?

+0

我很困惑,如果只返回一条记录,它如何默认为0?这个记录是否等于0?是否有更多的代码我们没有看到? – VoltaicShock 2010-09-08 14:35:27

+0

该记录不等于零。我不知道为什么会发生这种情况。这几乎就好像'0'被添加到下拉菜单中作为第一项,它正在成为默认值。我尝试手动设置默认的项目(0),这没有做任何事情,项目(1),这是错误的。 – Scott 2010-09-08 14:37:19

+0

是的,我通常有一个方法,将默认值添加到下拉列表中,所以我有东西要测试以查看用户是否选择了任何内容。 – VoltaicShock 2010-09-08 14:56:09

回答

1
With ddlType 
    .DataSource = types.Tables(0) 
    .DataTextField = "Name" 
    .DataValueField = "TypeId" 
    .DataBind() 
    If .Items.Count > 0 Then 
     .SelectedIndex = 0 
    End If 
End With 

编辑
鉴于你的结果和你的意见,我觉得无论是你的类型表是空的或你的代码没有运行。尝试添加一些断点并测试一些值。

types.Tables(0) isnot nothing 
types.Tables(0).Rows.Count 

EDIT2
看你的代码,我看到了一个不同的问题。你永远不会填充oControl。我不确定你为什么要创建一个全新的控件,并将它的ID设置为ddlType的ID。你为什么不用oControl来做你的数据绑定?或者将ddlType附加到您的网格?

+0

由于某种原因,这是行不通的。这是我第一次尝试。 ddl在ExtJS网格内,如果这有所改变。 DDL实际上是一列。 – Scott 2010-09-08 14:39:35

+0

该表确实有数据。下拉列表变为{0,firstElement}。我只想让它显示firstElement而不是0,并且我没有任何想法,0甚至在第一时间到达那里。 – Scott 2010-09-08 17:43:17

+0

你在正确的轨道上。我的错。我遵循了你的思考过程,最终发现当插入新行时,一个JavaScript方法正在运行,并由于某种原因将数据库中的typeId更改为第一个。错误代码=/ – Scott 2010-09-08 17:52:09

0

我知道这可能不会奏效,但无论如何要说。

您是否尝试在绑定数据之前清除所有项目?

ddType.Items.Clear(); 
+0

不起作用= / – Scott 2010-09-08 15:05:38

相关问题