DropDownList SelectedItem属性count始终返回0

时间:2013-11-25 11:53:38

标签: c# asp.net vb.net

在DropDownList中,我添加了属性,即添加列表项时的abcd。

它出现在html页面中的渲染后,当我尝试在回发后尝试在.cs文件中访问它时它不在那里。

ddl.SelectedItem.Attribute的计数始终返回0.

我怎样才能做到这一点。

属性值应为布尔值(1,0可以正常)

以下是将数据绑定到DDL的代码

Private Sub LoadSetTypes()
    SetTypes.Items.Clear()

    Dim setTypesList As List(Of Entities.Sets.SetType) = Config.SetMetaData.GetSetTypes(setInformation)

    SetTypes.DataTextField = "SetTypeName"
    SetTypes.DataValueField = "SetTypeID"
    SetTypes.DataSource = setTypesList
    SetTypes.DataBind()
    SetTypesUpdatePanel.Update()

    Dim i As Int32 = 0
    'For Each setType As Entities.Sets.SetType In setTypesList
    For Each lm As ListItem In SetTypes.Items
        Dim setType As Entities.Sets.SetType = setTypesList(i)
        i = i + 1
        'Dim listItem As ListItem = New ListItem(setType.SetTypeName, setType.SetTypeID)
        If (setType.IsProfiled) Then
            lm.Attributes.Add("IsProfiled", "1")
        End If
        'SetTypes.Items.Add(listItem)
    Next

    SetTypes.SelectedValue = Nothing

    SetTypes.Items.Insert(0, "Please Choose")
    SetTypes.SelectedValue = 0
    SetTypesUpdatePanel.Update()
End Sub

1 个答案:

答案 0 :(得分:1)

自定义属性不会被发送回服务器...您可以使用HiddenFeild控件来保存您的数据并使用javascript更改它,并且在服务器上您将读取更新的值

编辑:

ItemDataBound( for the ddl)上执行此操作:

int i // will represent the index of the listitem.

var d = new Dicionary<int,string>();

  e.Item.Attributes["myAttr"] ="lalala"+i;// something dynamic
  d[i.ToString()]="lalala"+i; ( dictionary is serializable)
  viewState["myAttributes"]=d;

现在想要阅读它:

var  myFirstIndexAttribute  = ((Dicionary<int,string>())viewState["myAttributes"])["0"];

你应该使用as而不是......你明白了。