【问题标题】:Get all items of listbox by converting it in string values通过将其转换为字符串值来获取列表框的所有项目
【发布时间】:2016-02-09 07:34:15
【问题描述】:

我有一个列表框,它的项目是从 ASP.net 中的日历控件中选择的日期。现在我需要根据每个日期是否存在数据库表在 foreach 循环中过滤它们。我使用的代码如下:

foreach (string item in ListBoxSelectedDates.Items)
{
    string q = "select count(*) from event_calendar where _date='" + Convert.ToDateTime(item).ToString("yyyy-MM-dd") + "'";
    MySqlCommand cmd = new MySqlCommand(q, conn);
    conn.Open();
    if ((long)(cmd.ExecuteScalar() ?? 0) == 0)
    {

        strBody += i + ". " + Convert.ToDateTime(item).ToString("dd-MMM-yyyy") + ", " + Convert.ToDateTime(item).DayOfWeek + "  : Leave <br>";
        i++;
    }
    else
    {

        strBody += i + ". " + Convert.ToDateTime(item).ToString("dd-MMM-yyyy") + ", " + Convert.ToDateTime(item).DayOfWeek + "  : Holiday <br>";
        i++;
    }

    conn.Close();
}

在上面代码的第一行出现错误是:

无法将“System.Web.UI.WebControls.ListItem”类型的对象转换为 输入“System.String”。

在不断尝试后我没有得到正确的解决方案......

【问题讨论】:

  • 如果将 foreach(ListBoxSelectedDates.Items 中的字符串项)替换为 foreach(ListBoxSelectedDates.Items 中的 var 项)会不会起作用?
  • 不,它不会,因为 ListItem 无法隐式转换为字符串。所以通过 .Value 或 .ToString() 的额外步骤是必要的。这就是 OP 得到错误的原因,如果他按照您的建议更改它,它将把抛出的错误 1 ​​行向下移动到 SQL 字符串。

标签: c# asp.net listbox


【解决方案1】:
 foreach (var _iterator in ListBoxSelectedDates.Items)                 // here "lstDate" is name of your list where you store all date.
            {
                string item = _iterator.ToString();
                string q = "select count(*) from event_calendar where _date='" + Convert.ToDateTime(item).ToString("yyyy-MM-dd") + "'";
                MySqlCommand cmd = new MySqlCommand(q, conn);
                conn.Open();
                if ((long)(cmd.ExecuteScalar() ?? 0) == 0)
                {

                    strBody += i + ". " + Convert.ToDateTime(item).ToString("dd-MMM-yyyy") + ", " + Convert.ToDateTime(item).DayOfWeek + "  : Leave <br>";
                    i++;
                }
                else
                {

                    strBody += i + ". " + Convert.ToDateTime(item).ToString("dd-MMM-yyyy") + ", " + Convert.ToDateTime(item).DayOfWeek + "  : Holiday <br>";
                    i++;
                }

                conn.Close();
            }

【讨论】:

    【解决方案2】:

    您可以使用ListItem.ToString() 方法将ListItem 转换为字符串。

    foreach (var _iterator in ListBoxSelectedDates.Items)
    {
        string item = _iterator.ToString();
    
        //The rest of your logic here
    
        conn.Close();
    }
    

    如果您想显式访问该值,可以查看ListItem 文档,在那里您可以看到有一个名为Value 的公共属性,因此您可以使用:

    string item = _iterator.Value;
    

    所以你得到:

    foreach (ListItem _iterator in ListBoxSelectedDates.Items)
    {
        string item = _iterator.Value;
    
        //The rest of your logic here
    
        conn.Close();
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-06
      • 2022-11-21
      • 1970-01-01
      • 2017-07-29
      • 1970-01-01
      • 2023-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多