WinForm 中ListBox显示三级分类,分类列表出现DataRowView的问题

BevisLiao 2016-09-29 05:21:53
1.运行窗体,点击右上角的生成数据。
2.查出第一级分类,listbox中的数据全部是DataRowView,点击弹出的小窗体后,数据正常显示。此时还会弹出小窗体。如第一张图
3.点击小窗体的确定,二级分类显示正常。

正常的效果:点击生成数据,显示一级分类。选择一级分类的某个选项,在第二个listbox中显示二级分类。

选择二级分类后,显示对应的二级分类下的三级分类(如果能实现三级分类更好,现在的三级分类出现同样的问题)



using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SpecTools
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
//读取当前访问的数据库连接字符串
//string dbConnStr= txtConfigStr.Text;
txtConfigStr.Text = "此处为数据库连接字符串";

MysqlHeper.DBConnectionString = txtConfigStr.Text;
}

private void BtnReadData_Click(object sender, EventArgs e)
{
//显示一级分类
string firstLevelSql = "SELECT categoryid,categoryname FROM wlerp.ali_category where topcategoryid=-1";
DataTable dt = MysqlHeper.ExecuteDataSet(CommandType.Text, firstLevelSql, null).Tables[0];

if (dt.Rows.Count > 0)
{
this.FirstLevelCategory.DataSource = dt;
this.FirstLevelCategory.DisplayMember = "categoryname";
this.FirstLevelCategory.ValueMember = "categoryid";
}
else
{
MessageBox.Show("没有数据!");
}
}


private void FirstLevelCategory_SelectedValueChanged(object sender, EventArgs e)
{
//获取当前的一级分类id
string topcategoryid = this.FirstLevelCategory.SelectedValue.ToString();

//根据选中的一级分类id查询对应的二级分类
string secondCateSql = "SELECT * FROM wlerp.ali_category where topcategoryid!=-1 and secondcategoryid=-1 and topcategoryid=?topcategoryid";

MySqlParameter paramer = new MySqlParameter("?topcategoryid", topcategoryid);
DataTable dt = MysqlHeper.ExecuteDataSet(CommandType.Text, secondCateSql, paramer).Tables[0];
if (dt.Rows.Count > 0)
{
this.SecondLevelCategory.DataSource = dt;
this.SecondLevelCategory.DisplayMember = "categoryname";
this.SecondLevelCategory.ValueMember = "categoryid";
}
else
{
MessageBox.Show("没有数据!");
}
}

private void SecondLevelCategory_SelectedValueChanged(object sender, EventArgs e)
{
////获取当前的一级分类id
//string secondcategoryid = this.SecondLevelCategory.SelectedValue.ToString();

////根据选中的一级分类id查询对应的二级分类
//string thirdCateSql = "SELECT * FROM wlerp.ali_category where topcategoryid!=-1 and secondcategoryid !=-1 and secondcategoryid=?secondcategoryid";

//MySqlParameter paramer = new MySqlParameter("?secondcategoryid", secondcategoryid);
//DataTable dt = MysqlHeper.ExecuteDataSet(CommandType.Text, thirdCateSql, paramer).Tables[0];
//if (dt.Rows.Count > 0)
//{
// this.ThirdLevelCategory.DataSource = dt;
// this.ThirdLevelCategory.DisplayMember = "categoryname";
// this.ThirdLevelCategory.ValueMember = "categoryid";
//}
//else
//{
// MessageBox.Show("没有数据!");
//}
}
}
}

...全文
409 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Justin-Liu 2016-09-30
  • 打赏
  • 举报
回复
太长了没看,debug能解决吧,在事件里面获取选中的item取值进行查询绑定下一级数据源控件

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧