【问题标题】:ASP.net / CheckBoxList overwrites values of input List<ListItems>ASP.net / CheckBoxList 覆盖输入 List<ListItems> 的值
【发布时间】:2014-09-22 21:52:29
【问题描述】:

以下场景:我在我的 Page_Load(内部 (!Page.IsPostBack))中创建了一个 CheckBoxList,然后使用 LINQ 在我的业务逻辑中加载一些数据。生成的数据是具有不同 Value 和 Text 属性的 List,这在我调用该方法的那一刻很好(因为我使用调试器检查了返回变量)。

现在,只要将 List 对象指定为我的 CheckBoxList 的 DataSource,使用调试器我就意识到 CheckBoxList.Items 已经用 Item.Text 属性覆盖了 Item.Value 属性。

所以,我想要的(和生产的)列表包含以下项目,例如:

然而,在我的 CheckBoxList 的 DataBind() 之后,这就是 Items 集合中的 Items 的样子:

这个问题有干净的解决方案吗?我的进一步兴趣是将项目(按值找到)与另一个项目列表(实际上是 SELECTED 项目)进行比较;我认为给 CheckBoxList 一个 ListItems 列表与 Item.Selected 属性将是最干净的方法。不)。

提前感谢您的任何建议!

【问题讨论】:

  • 您是否设置了CheckBoxListDataValueFieldDataTextField 属性,以便它知道要映射到值和文本属性的数据源中的哪些字段/属性?
  • ListItemText 返回Value,如果它是null。这同样适用于Value 属性,如果它是null,则返回Textstackoverflow.com/questions/15396385/… 在这种情况下,似乎只有 Text。所以你应该提供代码而不是图像,然后我们可以尝试修复它。
  • Ben Robinson:不,我不是,因为我认为 List 将被映射为匹配 Text/Text 和 Value/Value(这很有意义,对吗?)。问题是这些属性是字符串,那么如何映射 DataValueField 以匹配我的 ListItem 的 Value 属性,以及 DataTextField / Text 属性相同? Tim Schmelter:我确实偶然发现了类似的问题,但在我的情况下,反之亦然——值被文本覆盖。我完全可以提供我的代码,但我觉得这更像是一个逻辑错误。到目前为止,谢谢你们!
  • @konrad_pe:如前所述,如果ValuenullText 不是,则Value 会被Text 覆盖,反之亦然。
  • @Tim Schmelter:好的,我现在明白了。很抱歉在那个方面很慢。

标签: c# asp.net


【解决方案1】:

解决方法,不是真正的解决方案:我没有给我的 CheckBoxList 一个 List 作为 DataSource,而是提供一个 DataTable 对象作为 DataSource:

DataTable dt = new DataTable();
dt.Columns.Add("Text");
dt.Columns.Add("Value");

我没有创建 ListItem 对象,而是创建了新的 DataRow 对象:

DataRow dr = dt.NewRow();
dr["Text"] = "myText";
dr["Value"] = 0001; 
dt.Rows.Add(dr);

最后,我将 DataTable 分配给我的 CheckBoxList。 DataValueField 和 DataTextField 字符串必须与 DataTable 的列名相同:

myCheckBoxList.DataSource = dt;
myCheckBoxList.DataValueField = "Value";
myCheckBoxList.DataTextField= "Text";
myCheckBoxList.DataBind();

在进一步的步骤中,我遍历我的 CheckBoxList.Items 并将这些项目与值列表进行比较,将 ListItem.Selected 设置为 true,但由于这不是问题的一部分,所以我暂时将其抛在后面。请问你是否需要那个sn-p。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多