ListItem的值被DataBind上的文本替换

时间:2011-10-10 09:05:48

标签: c# .net radiobuttonlist listitem data-binding

我在这方面有点亏本,但在我的搜索中找不到任何有用的东西,所以我希望有人可以帮助我。

我有一个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();

2 个答案:

答案 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。