为什么我的程序没有正确执行?

时间:2014-07-01 15:07:52

标签: c# asp.net

我正在测试三种不同的条件; 第一个是DropDown1的selectedIndex是2,TextBox是空的 第二个是DropDown1的selectedIndex是2,TextBox不是空的 最后一个是dropDown的selectedIndex是3 执行时直接进入Last条件,甚至不测试第一个条件。

protected void btnValider_Click(object sender, EventArgs e)
{
    if (DropDown1.SelectedIndex == 2)
    {

        if (txtNvSt.Text != null)
        {

            con.charger("update Reparation set dateReception='" + txtDateReception.Text + "', nNouvST='" + txtNvSt.Text + "', suivieMateriel='" + txtSuivi.Text + "', statut='" + cmbStatut.SelectedValue + "' where serviceTag ='" + txtServiceTag.Text + "'", false);
            con.charger("update Materiel set reparation= NULL where serviceTag='" + txtServiceTag.Text + "'", false);
            Session["ST"] = txtNvSt.Text;
            Response.Redirect("NouveauMAt.aspx");

        }
        else
            if (txtNvSt.Text == null)
            {
                MessageBox.Show("txtNv null");
                con.charger("update Reparation set dateReception='" + txtDateReception.Text + "',suivieMateriel='" + txtSuivi.Text + "',statut='" + DropDown1.SelectedValue + "'  where serviceTag ='" + txtServiceTag.Text + "'", false);
                con.charger("update Materiel set reparation = NULL where serviceTag='" + txtServiceTag.Text + "'", false);
                con.charger("insert into Stocker values('1', '" + txtServiceTag.Text + "')", false);

            }
    }
    else
    {

        con.charger("update Materiel set reparation = NULL, idEmplacement = NULL where serviceTag='" + txtServiceTag.Text + "'", false);
        con.charger("insert into Stocker values('4', '" + txtServiceTag.Text + "')", false);
        con.charger("update Reparation set dateReception='" + txtDateReception.Text + "',suivieMateriel='" + txtSuivi.Text + "',statut='" + cmbStatut.SelectedValue + "' where serviceTag='" + txtServiceTag.Text + "'", false);
        Response.Redirect("StockHS.aspx");
    }


}

1 个答案:

答案 0 :(得分:2)

ASP TextBox的Text属性从不 null。 See the documentation

默认值为空字符串,因此如果要检查文本框是否实际为空,请将条件更改为以下内容:

if (txtNvSt.Text != string.Empty)

或者你可以使用String.IsNullOrWhiteSpace来计算空白,这取决于你的情况,可能仍然被认为是“空的”。

你说这只是直接转到else(我认为)。你说条件如下:

  

最后一个是dropDown的selectedIndex是3

但是,您的else实际上并没有检查任何内容。如果第一种情况失败,即检查DropDown1.SelectedIndex == 2,那么无论else的值是什么,您都总是输入此SelectedIndex

请注意,SelectedIndex 基于零,因此列表中的第二项是索引1,依此类推。