【问题标题】:check availability record code not working检查可用性记录代码不起作用
【发布时间】:2015-02-23 00:49:40
【问题描述】:

下面的代码我需要你的帮助。下面的代码假设如果用户在 Orders 表中没有任何记录来向他显示 UsOrderpanel 和 UsOrderlbl 一条消息,如果他已经有那么它将向他显示 Usorderspan 但实际上无论用户有什么代码订单在 Orders 表中与否向他显示 Usorderspan 仅当用户有记录时才应显示此面板

protected void MyordersLinkBtn_Click(object sender, EventArgs e)
    {

        if (Session["UsrNme"] != null)
        {
            using (SqlConnection UsOrderCon = new SqlConnection(sc))
            {
                UsOrderCon.Open();
                string chksUsOrderstring = "Select count (*) from Orders where UID=@chkUID";
                SqlCommand ChkUsOrderCMD = new SqlCommand(chksUsOrderstring, UsOrderCon);
                ChkUsOrderCMD.Parameters.AddWithValue("@chkUID", Payexictlbl.Text);
                //Check if orderId exists in db and if not then show the message
                if (!(Convert.ToInt32(ChkUsOrderCMD.ExecuteScalar()) > 0))
                {

                    Usorderspan.Visible = true;
                    UsOrderpanel.Visible = false;
                    SqlDataAdapter UsOrderADPA = new SqlDataAdapter("SELECT [OrderNo], [UID], [SubDate], [EndSubDate], [Amount], [Product], [payntmeth] FROM [Orders] WHERE  [UID] = @uSer ", sc);
                    var Userss = Session["UsrNme"];
                    UsOrderADPA.SelectCommand.Parameters.AddWithValue("@uSer", Userss);
                    DataSet UsOrderDST = new DataSet();

                    UsOrderADPA.Fill(UsOrderDST);

                    UsrOrdersCompLstViw.DataSource = UsOrderDST.Tables[0];
                    UsrOrdersCompLstViw.DataBind();

                }

                else
                {
                    UsOrderpanel.Visible = true;
                    UsOrderlbl.Text = "You dont have any orders";
                }
            }

        }
        MultiView1.ActiveViewIndex = 8;

    }

    }

【问题讨论】:

  • !(Convert.ToInt32(ChkUsOrderCMD.ExecuteScalar()) > 0) 几乎等同于 Convert.ToInt32(ChkUsOrderCMD.ExecuteScalar()) == 0 因为你不能有负数。
  • 你在里面放了一些断点吗?代码是否执行? ChkUsOrderCMD.ExecuteScalar() 返回什么?
  • 嗨@Mihai Caracostea 是的,我确定我已经设置了断点并且代码不会继续其他部分,因为用户没有任何订单
  • @Mihai Caracostea 我也使用 Convert.ToInt32(ChkUsOrderCMD.ExecuteScalar()) == 0 正如你提到的,但它仍然显示 Usorderspan 即使用户在表中没有任何订单

标签: c# asp.net panel


【解决方案1】:

更好地阅读您的问题,我认为您的情况正好相反。你说如果他在 Orders 中没有记录,你想给他看 UsOrderpanel 和 UsOrderlbl。如果他有,请给他看 Usorderspan。

查看您的代码,您的做法正好相反:如果他在 Orders 中没有记录,那么您有

Usorderspan.Visible = true;
UsOrderpanel.Visible = false;
...

如果他有你的记录

UsOrderpanel.Visible = true;
UsOrderlbl.Text = "You dont have any orders";

你应该改变你的条件

if (Convert.ToInt32(ChkUsOrderCMD.ExecuteScalar()) > 0)

【讨论】:

  • 嗨@Mihai Caracostea,非常感谢您的回复,我已经完全按照我在您的回答中提到的那样做了,但实际上什么也没发生,用户没有任何记录,但代码仍然没有传递给 else 语句它假设 UsOrderpanel 出现,但没有发生它显示的 Usorderspan 没有任何记录
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
相关资源
最近更新 更多