我这句话应放在哪??来者有分!!!

baiyashan 2006-06-09 01:59:27
这是一个查询,把查出的结果放到 DrDlei,DrXlei这两个dropdownlist控件里
选择DrDlei里的一个大类名 DrXlei里的小类会跟着变. 我想一点确定按扭然后把 DXlei里查出来的小类的id 插入数据库中!!


这两句话应放在哪呀?

drXlei.DataTextField="xname";
drXlei.DataValueField="id";



string sqlstring="select * from bk_lei";
conn.Open();
DataSet ds=new DataSet();
SqlCommand comm=new SqlCommand(sqlstring,conn);
drDlei.DataTextField="lname";
SqlDataReader dr=comm.ExecuteReader();
while(dr.Read())
drDlei.Items.Add(dr["lname"].ToString());
dr.Close();

string sqlstring2="select * from bk_xlei where id=1";

DataSet ds1=new DataSet();
SqlCommand comm1=new SqlCommand(sqlstring2,conn);

SqlDataReader dr2=comm1.ExecuteReader();

while(dr2.Read())
drXlei.Items.Add(dr2["xname"].ToString());

conn.Close();

drDlei的事件

private void drDlei_SelectedIndexChanged(object sender, System.EventArgs e)
{
SqlConnection connd=new SqlConnection(ConfigurationSettings.AppSettings["conn"]);
string sqlstring="select * from bk_lei";
connd.Open();
DataSet ds=new DataSet();
SqlCommand comm=new SqlCommand(sqlstring,connd);
SqlDataReader dr=comm.ExecuteReader();
string ssid;
dr.Close();
string cname;
cname=drDlei.SelectedValue.ToString();
if(cname=="--请选择--")
{
Response.Write("<script>alert(\"请选择大类中的项\")</script>");
return;
}
string sqlstring2="select id from bk_lei where lname='"+cname+"'";
SqlDataAdapter sda=new SqlDataAdapter(sqlstring2,connd);
sda.Fill(ds);
ssid=ds.Tables[0].Rows[0]["id"].ToString();
string sqlstring1="select * from bk_xlei where id='"+ssid+"'";
SqlCommand comm1=new SqlCommand(sqlstring1,connd);
SqlDataReader dr1=comm1.ExecuteReader();
drXlei.Items.Clear();
while(dr1.Read())
drXlei.Items.Add(dr1["xname"].ToString());


}

这是插入方法

string sql="insert into bk_zheng (id)values(@id)";
SqlCommand cmd=new SqlCommand(sql,conn);

cmd.Parameters.Add(new SqlParameter("@id",SqlDbType.Int,20));
cmd.Parameters["@id"].Value=drXlei.SelectedItem.Value;
try
{
conn.Open();
int i=cmd.ExecuteNonQuery();
conn.Close();
if(i>0)
{
Response.Write("<script>alert(\"添加成功!!!\")</script>");
}
}
catch(Exception ex )
{

Response.Write(ex.Message);
}

...全文
425 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jack_ljk 2006-06-10
  • 打赏
  • 举报
回复
drXlei.Items.Add(new ListItem(dr2["xname"].ToString(),dr2["id"].ToString));
clarke563 2006-06-10
  • 打赏
  • 举报
回复
我也是这个问题解决不了的啊。。。如果解决到了。麻烦写出来共享一下了
谢谢楼主了!
marco08 2006-06-10
  • 打赏
  • 举报
回复
DataSource后

DataBind前
Andfly 2006-06-09
  • 打赏
  • 举报
回复
//首先填充DropDownList1 也就是你所说的大类
public void Bind_DropDownList1()
{
DataTable dt = new DataTable();
SqlConnection connd = new SqlConnection(ConfigurationSettings.AppSettings["conn"]);
connd.open();
string sqlstring1 = "select * from 表1";
SqlDataAdapter sda = new SqlDataAdapter(sqlstring1, connd);
try
{
sda.fill(dt);
}
catch { }

if (dt.Rows.Count != 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
//InsurancePolicyNumber和InsurancePolicyId分别是你数据中的字段名
//第一个是显示名,第二个放的是和第二张表有联系的字段名
this.DropDownList1.Items.Add(new ListItem(dt.Rows[i]["InsurancePolicyNumber"].ToString(), dt.Rows[i]["InsurancePolicyId"].ToString()));
}
}
}
//在选择时间里面 根据选择的项来查询表2然后填充DropDownList2
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{

int InsurancePolicyId = Convert.ToInt32(this.DropDownList1.SelectedValue);

DataTable dt2 = new DataTable();
SqlConnection connd = new SqlConnection(ConfigurationSettings.AppSettings["conn"]);
connd.open();
string sqlstring2 = "select * from 表2 where 字段名="+InsurancePolicyId+"";
SqlDataAdapter sda = new SqlDataAdapter(sqlstring2, connd);
try
{
sda.fill(dt2);
}
catch { }

if (dt2.Rows.Count != 0)
{
for (int i = 0; i < dt2.Rows.Count; i++)
{
this.DropDownList2.Items.Add(new ListItem(dt2.Rows[i]["字段名1"].ToString(), dt2.Rows[i]["字段名2"].ToString()));
}
}
}
Andfly 2006-06-09
  • 打赏
  • 举报
回复
.....我现在用的2005版本 要不给你做个了
这样吧 我做个 可是没有数据库操作部分 至于取数据库 你自己来
Andfly 2006-06-09
  • 打赏
  • 举报
回复
不知道你看明白没````
baiyashan 2006-06-09
  • 打赏
  • 举报
回复
楼上这(学习中...)大哥小弟水平有限!! 555555
Andfly 2006-06-09
  • 打赏
  • 举报
回复
在 post_Id 这个DropDownList的 SelectedIndexChanged
你只要得到你所要和第二个表的关键字 也就是我上面代码
this.post_Id.Items.Add(new ListItem(table.Rows[i]["InsurancePolicyNumber"].ToString(), table.Rows[i]["InsurancePolicyId"].ToString()));
的第二个参数

post_2.SelectedValue.tostring();
以这个作为查询条件来查询第二张表
然后填充到第二个DropDownList中 就可以了
baiyashan 2006-06-09
  • 打赏
  • 举报
回复
楼上这(学习中...)大哥小弟水平有限!! 555555
Andfly 2006-06-09
  • 打赏
  • 举报
回复
给你看一个我填充 DropDownList的方法 
我数据库操作都写在一起的,所以前台只是一些操作
Employee 和InsurancePolicy 都是我自己定义的类
GetEmployeeByEmployeeId和GetInsurancePolicyByTollCollector是我对数据库操作的方法

public void Get_SelectA()
{
Employee employee = new Employee();
employee = Employee.GetEmployeeByEmployeeId(Convert.ToInt32(this.SelectA.SelectedValue));
if (employee != null)
{
DataTable table = InsurancePolicy.GetInsurancePolicyByTollCollector(employee.JobNumber.ToString());
if (table != null)
{
this.post_Id.Items.Clear();
for (int i = 0; i < table.Rows.Count; i++)
{
this.post_Id.Items.Add(new ListItem(table.Rows[i]["InsurancePolicyNumber"].ToString(), table.Rows[i]["InsurancePolicyId"].ToString()));
}
}
}
}
dgrwang 2006-06-09
  • 打赏
  • 举报
回复
private void drDlei_SelectedIndexChanged(object sender, System.EventArgs e)
{
SqlConnection connd=new SqlConnection(ConfigurationSettings.AppSettings["conn"]);
/*这一部分好像都没用
string sqlstring="select * from bk_lei";
connd.Open();
DataSet ds=new DataSet();
SqlCommand comm=new SqlCommand(sqlstring,connd);
SqlDataReader dr=comm.ExecuteReader();
string ssid;
dr.Close();
*/
string cname;
cname=drDlei.SelectedValue.ToString();
if(cname=="--请选择--")
{
Response.Write("<script>alert(\"请选择大类中的项\")</script>");
return;
}
/*
string sqlstring2="select id from bk_lei where lname='"+cname+"'";
SqlDataAdapter sda=new SqlDataAdapter(sqlstring2,connd);
sda.Fill(ds);
string ssid=ds.Tables[0].Rows[0]["id"].ToString();
string sqlstring1="select * from bk_xlei where id='"+ssid+"'";
*/
//上边的写个存储过程算了
或者
string sqlstring1="select * from bk_xlei where id=(select id from bk_lei where lname='"+cname+"')"
SqlCommand comm1=new SqlCommand(sqlstring1,connd);
connd.Open();
SqlDataReader dr1=comm1.ExecuteReader();
drXlei.Items.Clear();
while(dr1.Read())
drXlei.Items.Add(dr1["xname"].ToString());
connd.close()

}
大概这样的,你最好调试一下, 看看具体情况,到底那一步错误了
Andfly 2006-06-09
  • 打赏
  • 举报
回复
你这样两张表肯定有一个字段有联系的吧

你先填充大类drDlei
drDlei.Items.Add(显示名,小类表的关键字)
然后根据 在drDlei_SelectedIndexChanged时间中先得到所选择大类中小类的关键字(也就是drDlei.Items.Add(显示名,小类表的关键字)中的后一个参数
)然后从数据中查找 再填充第二个DropDownList
填充的方法是第二个一样`````````
baiyashan 2006-06-09
  • 打赏
  • 举报
回复
等待中....
baiyashan 2006-06-09
  • 打赏
  • 举报
回复
高手们能帮我改改吗?或是有什么例子吗?
baiyashan 2006-06-09
  • 打赏
  • 举报
回复
上面的方法也试不了行呀!!
dgrwang 2006-06-09
  • 打赏
  • 举报
回复
像你用drXlei.Items.Add(dr2["xname"].ToString(),dr2["id"].ToString())这种,就不用绑定,也不用drXlei.DataTextField="xname";
drXlei.DataValueField="id";
这些了
要想选择DrDlei里的一个大类名 DrXlei里的小类会跟着变,要DrDlei的autopostback是true
而在他的DrDlei_SelectedIndexChanged事件中,再根据DrDlei的SelectedValue值,对DrXlei里边的值进行Add,或者用数据绑定
lazyfish 2006-06-09
  • 打赏
  • 举报
回复
drXlei.Items.Add(new ListItem(dr2["xname"].ToString(),dr2["id"].ToString));
enjoy330 2006-06-09
  • 打赏
  • 举报
回复
要知道dropdownlist裏面的item是listItem對象,不是string, 如果你加入的是string,系統默認會將其變爲text,value都為這個string的listItem對象。
chiquititia 2006-06-09
  • 打赏
  • 举报
回复
我不知道,来凑个热闹:)
enjoy330 2006-06-09
  • 打赏
  • 举报
回复
寫成這樣drXlei.Items.Add(new ListItem(dr2["xname"].ToString(),dr2["id"].ToString));
才不至於Text和Value值一樣。
加载更多回复(6)

62,041

社区成员

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

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

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

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