【发布时间】: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 即使用户在表中没有任何订单