在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
答案 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
而不是......你明白了。