C# ListBox(选项从数据库读取) 和 TextBox 数据同步问题 !(非诚勿扰)

huming250234836 2012-08-30 10:50:28
我数据库里面有一个 Member表
表里面有以下字段:MemberID,MemberName,Called;

在窗体中添加一个ListBox,显示所有MemberName;

再在窗体里面添加两个TextBox,分别显示MemberName,Called;

我想问当我点ListBox中任何一个MemberName时,两个TextBox中的值如何随之同步改变?

我用三层架构写的:ListBox中MemberName的选项从数据库中 Member表中读取。

下面这代码根本不行:
if (this.listbox.SelectedIndex != -1)
{
this.textBox.Text=this.listbox.SelectedItem.ToString();
}

希望高手 解答!!! 求完整的代码 必有重赏... 谢谢
...全文
428 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
DENQH 2012-09-03
  • 打赏
  • 举报
回复

DataRowView dv=this.listbox.SelectedItem as DataRowView
if (dv!= null)
{
this.textBox.Text=dv[1].ToString();
}
DENQH 2012-09-03
  • 打赏
  • 举报
回复

DataRowView dv=this.listbox.SelectedItem as DataRowView
if (dv!= null)
{
this.textBox.Text=dv[1].ToString();
}
huming250234836 2012-09-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]


SysMemberManage.selectmembername(member)
你这个方法返回的明显是个Datatable类型啊。。。
你Datatable类型Tostring(),当然是System.Data.DataRowView 这个了。。。

Datatable dt=SysMemberManage.selectmembername(member);
this.t……
[/Quote]
不好意思!最近网络出问题了,没及时回复。 通过你的提醒!恩,是这个地方出问题了。但改正后,用this.textbox.Text=dt.rows[0]["MemberName"].toString(); 还是读取不到数据,是不是绑定Listbox 方法错了?
public void banding_listbox()
{
this.lboxmember.DataSource = SysMemberManage.Member(); //
this.lboxmember.DisplayMember = "membername";
this.lboxmember.ValueMember = "memberid";
}
用DataSource 进行绑定能行吗? 你以前做过这样的案例吗? 谢谢
wzg6540 2012-08-31
  • 打赏
  • 举报
回复
TO:7楼 Thanks
最后一句dt.rows["MemberName"].toString();这个处理错了

this.textbox.Text=dt.rows[0]["MemberName"].toString();
lutaotony 2012-08-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

SysMemberManage.selectmembername(member)
你这个方法返回的明显是个Datatable类型啊。。。
你Datatable类型Tostring(),当然是System.Data.DataRowView 这个了。。。

Datatable dt=SysMemberManage.selectmembername(member);
this.te……
[/Quote]
楼上的是正确的,如果数据是唯一的就可以DataTable.Row[0][0].ToString();
如果是多条还要加条件处理
wzg6540 2012-08-31
  • 打赏
  • 举报
回复

SysMemberManage.selectmembername(member)
你这个方法返回的明显是个Datatable类型啊。。。
你Datatable类型Tostring(),当然是System.Data.DataRowView 这个了。。。

Datatable dt=SysMemberManage.selectmembername(member);
this.textbox.Text=dt.rows["MemberName"].toString();
huming250234836 2012-08-31
  • 打赏
  • 举报
回复
菜鸟初次提问请见谅! 3楼提的问题下次一定注意. 三层架构过程如下:

//封装属性

public class Member
{
int userid;

public int Userid
{
get { return userid; }
set { userid = value; }
}
string userName;

public string UserName
{
get { return userName; }
set { userName = value; }
}

string called;

public string Called
{
get { return called; }
set { called = value; }
}
}
//数据中查询存储过程
create up_T_member_selectmembername
@id int
as
select membername from T_Member where memberid=@id


//memberDAO 中写入方法
// 查询
public static DataTable Member()
{
try
{
return DbHelper.ExecuteSelectProc("Up_Member_ShowAll");
}
catch (Exception ex)
{
throw ex;
}
}
public static DataTable selectmembername(Member member)
{
DataTable dt = null;
SqlParameter[] paras ={
new SqlParameter("@name",SqlDbType.NVarChar,5)
};
paras[0].Value = member.Userid;
dt = DbHelper.ExecuteSelectProc("up_T_member_selectmembername", paras);

return dt;
}
// 返回
public static DataTable selectmembername(Member member)
{
return SysMemberDAO.selectmembername(member);
}
//绑定listbox
public void banding_listbox()
{
this.lboxmember.DataSource = SysMemberManage.Member();
this.lboxmember.DisplayMember = "membername";
this.lboxmember.ValueMember = "memberid";
}

// 在窗体里调用方法
private void lboxmember_SelectedIndexChanged(object sender, EventArgs e)
{

MemberUser member = new MemberUser();
member.UserName = this.lboxmember.SelectedValue.ToString();
this.textbox.Text = SysMemberManage.selectmembername(member).ToString();


// 最后运行程序
textbox中 显示: System.Data.DataRowView

过程就是这样,大神帮忙!
bbjiabcd 2012-08-30
  • 打赏
  • 举报
回复
你确认以下代码是在listbox_SelectedIndexChanged下的?
if (this.listbox.SelectedIndex != -1)
{
this.textBox.Text=this.listbox.SelectedItem.ToString();
}
老龙友 2012-08-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
我数据库里面有一个 Member表
表里面有以下字段:MemberID,MemberName,Called;

在窗体中添加一个ListBox,显示所有MemberName;

再在窗体里面添加两个TextBox,分别显示MemberName,Called;

我想问当我点ListBox中任何一个MemberName时,两个TextBox中的值如何随之同步改变?

我用三层架构写……
[/Quote]

不行的结果是什么?提示是什么?

特别讨厌这种问题。。。。

“我的电脑启动不了,怎么办”

“我的WORD运行不了,怎么回事?”

每个问题都有一万多种可能的原因,不给出现象让别人帮你假设?没人有那闲工夫。
全栈极简 2012-08-30
  • 打赏
  • 举报
回复

private void Form1_Load(object sender, EventArgs e)
{
string[] args = {"a","b","c" };
this.listBox1.DataSource = args;
}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
//在各自的判断里面取到值以后到数据库中查,然后赋值。
if (this.listBox1.SelectedItem.ToString().Equals("a"))
{
this.textBox1.Text = "a1";
this.textBox2.Text = "a2";
}
if (this.listBox1.SelectedItem.ToString().Equals("b"))
{
this.textBox1.Text = "b1";
this.textBox2.Text = "b2";
}
if (this.listBox1.SelectedItem.ToString().Equals("c"))
{
this.textBox1.Text = "c1";
this.textBox2.Text = "c2";
}
}
shazhubaobao 2012-08-30
  • 打赏
  • 举报
回复
晕 直接来数据查询不就行了嘛 每次点击都查询一次不可以吗?

http://www.answersfull.com/question/html/Question/201207/23-60598.html

111,123

社区成员

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

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

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