• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

C#的添加与删除问题!!!

perfect_love 2008-12-02 11:02:14
我写咯一个简单的投票系统,可是在我新添加一个用户名后在马上在删除控件中去删除新添加的这个用户就删除不了,但能删除以前的用户,新添加的这个用户写入咯数据库中的!
这是为什么??

这是删除代码:
private void button5_Click(object sender, EventArgs e)
{


ds = link.relateData("select * from piaoshu");

for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dr = ds.Tables[0].Rows[i];
if(dr[0].ToString()==this.comboBox1.Text )
dr.Delete();
this.label4.Text = this.comboBox1.Text + "删除成功!";


}
link.updatedata(ds);
checkedListBox1.Items.Clear ();
textBox2.Text = "";
ds = link.relateData("select * from piaoshu");
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dr = ds.Tables[0].Rows[i];
this.textBox2.Text += "姓名:" + dr[0].ToString() + "票数:" + dr[1].ToString() + "\r\n";
this.checkedListBox1.Items.Add(dr[0].ToString());

}


}

这是添加代码:
private void button2_Click(object sender, EventArgs e)
{
if (this.textBox1.Text == "")
{
MessageBox.Show("名字不能为空!");
}
else
{
this.comboBox1.Items.Add(textBox1.Text);

ds = link.relateData("select * from piaoshu");
string name = this.textBox1.Text;
DataRow dr = ds.Tables[0].NewRow();
dr[0] = name;
dr[1] = 0;
ds.Tables[0].Rows.Add(dr);
try
{

link.updatedata(ds);
this.label2.Text = name + "添加成功!";
this.textBox2.Text = "";
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dr = ds.Tables[0].Rows[i];
this.textBox2.Text += "姓名:" + dr[0].ToString() + "票数:" + dr[1].ToString() + "\r\n";

}
this.checkedListBox1.Items.Add(textBox1.Text);
}
catch
{
MessageBox.Show(name + "以在候选人名列中!");
this.textBox1.Text = "";
}
}

}

谢谢~!
...全文
67 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
whitechololate 2008-12-02
如果老数据能删除的话,就不存在删除逻辑的错误,
建议楼主添加新用户后,在删除按钮事件中,跟踪一下,看看
ds = link.relateData("select * from piaoshu"); 中 ds里是否存在刚刚添加的用户。照楼主描述的 应该是ds里不存在新添加的用户
回复
jasen520 2008-12-02
你检查一下删除时数据的索引是否正确
回复
yilanwuyu123 2008-12-02
1, 最后的错别字

2, 可能是没有刷新数据源引起的
回复
Old_Mouse 2008-12-02

ds.Tables[0].Rows[1].Delete;
回复
jefflovejava 2008-12-02
建议你跟踪一下

dr.Delete();

这一句到底在你删除新用户的时候有没有执行,打印出来所以的对比值看看,是倒是是没有select出来还是怎么样,

这里的这些代码似乎没有什么问题的,如果你的控件正常的话,那么就是你的link.relateData(String)方法有点小bug,可能没有读出所有的数据
回复
zwfhome1 2008-12-02
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dr = ds.Tables[0].Rows[i];
if(dr[0].ToString()==this.comboBox1.Text )
dr.Delete();
this.label4.Text = this.comboBox1.Text + "删除成功!";


}
这个代码不正确
用FOREACH 或 WHILE
回复
cnidtf 2008-12-02
你可能没有刷新窗体
回复
qinhl99 2008-12-02
有错别字,哈哈
回复
qinhl99 2008-12-02
有错别字,哈哈
回复
qinhl99 2008-12-02
有错别字,哈哈
回复
相关推荐
综教楼后的那个坑用双向链表实现 描述   在 LIT 综教楼后有一个深坑,关于这个坑的来历,有很多种不同的说法。其中一种说法是,在很多年以前,这个坑就已经在那里了。这种说法也被大多数人认可,这是因为该坑有一种特别的结构,想要人工建造是有相当困难的。   从横截面图来看,坑底成阶梯状,由从左至右的 1..N 个的平面构成(其中 1 ≤ N ≤ 100,000),如图:    *            * :    *            * :    *            * 8    *    **      * 7    *    **      * 6    *    **      * 5    *    ********* 4 <- 高度    *    ********* 3    ************** 2    ************** 1 平面 |  1  |2|   3    | 每个平面 i 可以用两个数字来描述,即它的宽度 Wi 和高度 Hi,其中 1 ≤ Wi ≤ 1,000、1 ≤ Hi ≤ 1,000,000,而这个坑最特别的地方在于坑底每个平面的高度都是不同的。每到夏天,雨水会把坑填满,而在其它的季节,则需要通过人工灌水的方式把坑填满。灌水点设在坑底位置最低的那个平面,每分钟灌水量为一个单位(即高度和宽度均为 1)。随着水位的增长,水自然会向其它平面扩散,当水将某平面覆盖且水高达到一个单位时,就认为该平面被水覆盖了。   请你计算每个平面被水覆盖的时间。    灌水 水满后自动扩散 | | * | * * | * * * * V * * V * * * * * * .... * *~~~~~~~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~**~~~~~~* *~~~~**~~~~~~* * ********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* ************** ************** ************** ************** ************** **************    4 分钟后    26 分钟后        50 分钟后    平面 1 被水覆盖     平面 3 被水覆盖    平面 2 被水覆盖输入   输入的第一行是一个整数 N,表示平面的数量。从第二行开始的 N 行上分别有两个整数,分别表示平面的宽度和高度。 输出   输出每个平面被水覆盖的时间。
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2008-12-02 11:02
社区公告

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