ASP.NET 省份选择器的问题。好纠结啊,纠结一个晚上了

爆小猴 2012-07-24 01:17:24
自己构造了一个类
		public class ProvinceItem
{
public int Id { get; set; }
public string Name { get; set; }

}

因为省份、城市选择器中,省份的数据库promary有2列,一列是Id,一列是省份名Name
在form中new了一个ProvinceItem实例item
			    ProvinceItem item = new ProvinceItem();
item.Id = dataReader.GetInt32(dataReader.GetOrdinal("proID"));
item.Name = dataReader.GetString(dataReader.GetOrdinal("proName"));
cmbPro.Items.Add(item.Name);

为了显示出省份名,最后一行Add的是item.Name
但是问题来了
在城市的数据库city中,
为了方便查找,city的外键是promary的proID项
所以比较的时候,下面这段代码出错
ProvinceItem pitem = (ProvinceItem) cmbPro.SelectedItem;
因为item.Name不是object类,而是string类,怎么弄才能实现省份的选择呢

完整代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;

namespace 省市选择
{

public partial class Form1 : Form
{

public Form1()
{
InitializeComponent();
string connStr = ConfigurationManager.ConnectionStrings["DbConn"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from promary";
using (SqlDataReader dataReader = cmd.ExecuteReader())
{
while (dataReader.Read())
{
ProvinceItem item = new ProvinceItem();
item.Id = dataReader.GetInt32(dataReader.GetOrdinal("proID"));
item.Name = dataReader.GetString(dataReader.GetOrdinal("proName"));
cmbPro.Items.Add(item);
}
}
}
}
}
public void cmbPro_SelectedIndexChanged(object sender, EventArgs e)
{
cmbCity.Items.Clear();
ProvinceItem pitem = (ProvinceItem) cmbPro.SelectedItem;
string connStr = ConfigurationManager.ConnectionStrings["DbConn"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from city where proID=@proID";
cmd.Parameters.Add(new SqlParameter("proID",pitem.Id));
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
string cityName = reader.GetString(reader.GetOrdinal("cityName"));
cmbCity.Items.Add(cityName);
}
}
}
}
}
public class ProvinceItem
{
public int Id { get; set; }
public string Name { get; set; }

}
}


}
...全文
151 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
b8820230 2012-07-24
  • 打赏
  • 举报
回复
用DataSet和SqlDataAdapter做,把promary表中的数据通过SqlDataAdapter存储在DataSet临时数据集(假设对象ds)。
cmb.DataSource=ds.tables[0];
cmb.displayMember="proName";
cmb.valuemember="ID";
爆小猴 2012-07-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

cmbPro.Items.Add(item.Name);
改成
cmbPro.Items.Add(item);

类ProvinceItem
重写ToString()
方法就行了!
[/Quote]

就是把name 给Tostring?
我纠结的问题点就是
要 显示省份,但是 显示的省份 不是object类
然后 显示城市 的时候是根据 省份 来列出的
因为不是object类,所以无法转换成ProvinceItem
tiangong789 2012-07-24
  • 打赏
  • 举报
回复
一定是你的思路有问题 显示什么(text)跟值(value)完全可以独立开来的
a82344626 2012-07-24
  • 打赏
  • 举报
回复
cmbPro.Items.Add(item.Name);
改成
cmbPro.Items.Add(item);

类ProvinceItem
重写ToString()
方法就行了!
  • 打赏
  • 举报
回复
http://blog.csdn.net/xianfajushi/article/details/5928136
maji_lulu 2012-07-24
  • 打赏
  • 举报
回复
public class USState
{
private string myShortName;
private string myLongName;

public USState(string strLongName, string strShortName)
{

this.myShortName = strShortName;
this.myLongName = strLongName;
}

public string ShortName
{
get
{
return myShortName;
}
}

public string LongName
{

get
{
return myLongName;
}
}

public override string ToString()
{
return this.ShortName + " - " + this.LongName;
}
}


private void Form1_Load(object sender, EventArgs e)
{
ArrayList USStates = new ArrayList();
USStates.Add(new USState("Alabama", "AL"));
USStates.Add(new USState("Washington", "WA"));
USStates.Add(new USState("West Virginia", "WV"));
USStates.Add(new USState("Wisconsin", "WI"));
USStates.Add(new USState("Wyoming", "WY"));

this.comboBox1.DataSource = USStates;
this.comboBox1.DisplayMember = "LongName";
this.comboBox1.ValueMember = "ShortName";

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{


}

DisplayMember 和ValueMember 表示要显示的和值

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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