我在这方面有点亏本,但在我的搜索中找不到任何有用的东西,所以我希望有人可以帮助我。
我有一个RadioButtonList,我正在添加一个动态创建的ListItems列表,我在其中设置每个项目的文本和值。在RadioButtonList的DataBind上,ListItem的值被Text替换,这对我来说似乎没有意义。
当我在Firebug中看到标签和输入上的值相同时,我可以在客户端看到,并且值无处可见。
有没有其他人有这样的经历,或者有人知道我可能会出错的地方吗?
var rbList = new List<ListItem>();
var radioButtonList = new RadioButtonList();
foreach(var object in objects) {
var li = new ListItem {Text = object.Name, Value = object.Guid};
rbList.Add(li);
}
radioButtonList.DataSource = rbList;
radioButtonList.DataBind();
答案 0 :(得分:10)
你在这里使用数据绑定吗?你能不能直接将你的ListItem添加到单选按钮列表中?
我认为Databinding对如何绑定列表感到困惑,因此只是在每个元素上使用ToString,这似乎只返回Text
属性。然后将其用作文本和值。
您可能只想创建项目并将其直接添加到单选按钮控件中,如下所示:
var radioButtonList = new RadioButtonList();
foreach(var object in objects) {
var li = new ListItem {Text = object.Name, Value = object.Guid};
radioButtonList.Items.Add(li);
}
答案 1 :(得分:0)
对于那些仍在挣扎中的人-如果控件拥有,请不要忘记填写DataValueField。只需提供您的value属性的字符串名称,就可以了。
正如Chris所说-数据绑定实际上是混乱的,因此存在DataValueField。我的问题是基本的asp:DropDownList。