本帖最后由 李阳_TickTock 于 2012-9-29 09:23 编辑
卢京 发表于 2012-9-29 09:03
我昨天改了一下,首先原因出在cboProvince.SelectValue返回的是object类型,而PronviceId要的是int类型, ...
老师一再强调过,主键不能有意义,所以这种做法其实也是错的
既然找到问题原因,那既然SelectedIndex可以传一个整形进去,SelectedValue转成整形一定也可以传进去。
说到这我好像想起来了,这个项目我也做过,那个ComboBox有两个值,一个是items,一个是value,一个item对应一个value,你在初始化的时候,应该把省的名字赋给item,然后把省的id赋给value。这样取值的时候,就可以通过value取出省的id,不知道你是不是这么做的?
我是这么赋值的- //获取并设置省
- string sql = null;
- DataSet ds = null;
- sql = "select id,ShengName from T_Sheng";
- ds = ConnectSQLServer(sql);
- cmbSheng.DataSource = ds.Tables[0];
- cmbSheng.DisplayMember = "ShengName";
- cmbSheng.ValueMember = "id";
复制代码 之后获取省的ID,在数据库中搜索对应的市并赋值- /// <summary>
- /// 获取并设置市和区号
- /// </summary>
- void showShi() {
- string sql = null;
- DataSet ds = null;
- sql = "select Id,ShiName,QuHao from T_Shi where ShengID =" + cmbSheng.SelectedValue;
- ds = ConnectSQLServer(sql);
- cmbShi.DataSource = ds.Tables[0];
- cmbShi.DisplayMember = "ShiName";
- cmbShi.ValueMember = "id";
复制代码 当然,我没有用那种传参数的方法防注入,那时候做这项目的时候也没注意这点。但是我觉得既然selectedIndex可以传整形进去,只要selectedValue搜出来的真的是个整形,那么把它转成整形传进去也应该没有问题,你可以设断点看一下,selectedValue里面返回的值到底是什么。
说错了不是selected,搞成HTML了,是ComboBox控件,就是你的cbo什么什么,我命名不规范,写成cmb了呵呵
刚看了你的代码,你好像也跟我一样是这么赋值的,我待会也转成参数瞧瞧,可能哪个环节出错了 |