-3
public partial class StudentView : System.Web.UI.Page
{
    SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["DBCS"].ConnectionString);

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (!string.IsNullOrEmpty(TextBox1.Text))
        {
            string str = "Mysqlqeury";

            con.Open();
            SqlCommand cmd = new SqlCommand(str, con);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();

            if (Page.IsPostBack)
            {
                da.Fill(ds, str);
                GDStudents.DataSource = ds;
                GDStudents.DataBind();
            }
            else
            {
                string myStringVariable1 = "No Student Record(s) Exist!! ";
                ClientScript.RegisterStartupScript(this.GetType(), "myAlert", "alert('" + myStringVariable1 + "');", true);
            }
        }
        else
        {
            string myStringVariable = "Enter Student Id Or Student Name!";
            ClientScript.RegisterStartupScript(this.GetType(), "myAlert", "alert('" + myStringVariable + "');", true);
        }
        con.Close();
    }   
}
4

2 回答 2

1

Page.IsPostBack 在这种情况下将始终为真,它只会在第一页加载时为假。因为此条件在按钮单击事件处理程序中 Page.IsPostBack 永远不会为假,所以 else 部分永远不会被执行。

这是有关 Page.IsPostBack 属性的一些文档

http://msdn.microsoft.com/en-us/library/system.web.ui.page.ispostback.aspx

如果您需要在第一页加载时执行代码,您应该只使用 Page.IsPostBack。

你到底想在这里测试什么?

如果您只想测试数据库中是否有任何记录,那么只需检查您返回的 DataSet 是否为空。尝试这样的事情:

public partial class StudentView : System.Web.UI.Page
{
    SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["DBCS"].ConnectionString);

    bool IsDataSetEmpty(DataSet dataSet)
    {
        foreach(DataTable table in dataSet.Tables)
        {
          if (table.Rows.Count != 0) 
            return false;
        }

        return true;
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (!string.IsNullOrEmpty(TextBox1.Text))
        {
            string str = "Mysqlqeury";

            con.Open();
            SqlCommand cmd = new SqlCommand(str, con);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds, str);
            if (!IsDataSetEmpty(ds))
            {
               GDStudents.DataSource = ds;
               GDStudents.DataBind();
            }
            else
            {
               string myStringVariable1 = "No Student Record(s) Exist!! ";
               ClientScript.RegisterStartupScript(this.GetType(), "myAlert", "alert('" + myStringVariable1 + "');", true);
            }
    }
    else
    {
        string myStringVariable = "Enter Student Id Or Student Name!";
        ClientScript.RegisterStartupScript(this.GetType(), "myAlert", "alert('" + myStringVariable + "');", true);
    }
    con.Close();
}   
}
于 2013-06-21T00:27:22.303 回答
0

由于以下任何原因,看起来第一个 else 不会被调用:

  • TextBox1.Text没有任何价值
  • Page.IsPostBack是真的
  • 发生某种异常

尝试检查这些,您可能会找到答案。

于 2013-06-20T23:58:10.570 回答