【问题标题】:Click Button - No Action单击按钮 - 无操作
【发布时间】:2013-09-21 04:14:09
【问题描述】:

我正在尝试从数据库中检索信息。用户在 ID 文本框中输入他正在寻找的人的 ID,然后按显示按钮。网格视图应显示结果。但是当按下按钮时,什么也没有发生。谁能帮助或告诉我应该检查什么? 按钮代码:

protected void btnDisplay_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection("Data Source="Name";Initial Catalog="Name";Integrated Security=True");
            SqlCommand cmd = new SqlCommand("displayData", conn);
            conn.Open();
            cmd.Parameters.Add("@ID", System.Data.SqlDbType.Int).Value = Convert.ToInt32(txtID.Text);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataReader rd = cmd.ExecuteReader();
            grvResults.DataSource = rd;
            grvResults.DataBind();
        }

这里是存储过程:

USE ["Name"]
GO  
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[displayData] (@ID int)
as
begin
SELECT * FROM Customers WHERE ID = @ID
end

这里是显示数据的方法:

public List<Customer> displayData()
        {
            List<Customer> lst = new List<Customer>();
            SqlConnection conn = new SqlConnection("Data Source="Name";Initial Catalog="Name";Integrated Security=True");
            SqlCommand cmd = new SqlCommand("Select * From Customers", conn);
            conn.Open();
            SqlDataReader rd = cmd.ExecuteReader();
            while (rd.Read())
            {
                lst.Add(new Customer()
                {
                    ID = rd.GetInt32(0),
                    FName = rd.GetString(1),
                    LName = rd.GetString(2)

                });
            }
            return lst;
        }

按钮的aspx:

<asp:Button ID="btnDisplay" runat="server" Text="Display" OnClick="btnDisplay_Click" />

【问题讨论】:

  • 你还能显示按钮的 ASPX 标记吗?
  • 除非我遗漏了什么 - 它看起来不错。你有什么错误吗?如果不是,你确定SP返回数据吗?您可以尝试使用相同参数从 SSMS 自行运行它吗?
  • 我没有得到任何错误,它只是没有做任何事情。刚刚做了,SP 效果很好......
  • 如果调用了 SP,你能否在 SQL Profiler 中进行跟踪?

标签: c# asp.net visual-studio-2012 sql-server-2012


【解决方案1】:

您是否尝试在按钮单击中设置断点。是否达到断点。如果没有,我会说删除

OnClick="btnDisplay_Click" 

来自您的 aspx 页面。然后通过选择控件及其事件从 .cs 页面添加默认单击事件。他们尝试逐行调试。

【讨论】:

  • 我检查了 onclick 事件,我似乎有 VS 错误。当我再次重写所有内容时,它开始起作用了
【解决方案2】:

在您的代码隐藏中尝试以下代码。它应该正确绑定并填充网格视图。如果可行,请从那里添加更多代码。如果它不起作用,请查看连接字符串之类的内容。让我知道。

        SqlConnection conn = new SqlConnection("Data Source="?";Initial Catalog="?";Integrated Security=True");

        SqlCommand cmd = new SqlCommand("SELECT * FROM Customers WHERE ID = @ID", conn);
        cmd.Parameters.Add("@ID", System.Data.SqlDbType.Int).Value = Convert.ToInt32(txtID.Text);

        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = cmd;

        DataTable dt = new DataTable();

            conn.Open();
            da.Fill(dt);
            conn.Close();

        grvResults.DataSource = dt;
        grvResults.DataBind();

【讨论】:

  • 为什么?网格可以绑定到 DataReader 以及 DataTable。
  • 我不太确定他想要完成什么。他在他的代码中使用了两次conn.Open(),并且从不调用conn.Close() 我只是想提供有效的代码,我怀疑数据表和数据读取器之间的性能在这一点上是一个考虑因素。
  • 感谢您的帮助,将尝试。
【解决方案3】:

我觉得你太复杂了 首先这样做:

这应该可以正常工作。您已经有一个存储过程,这使它更容易。 (对不起图片,我想确保你理解这一点)

【讨论】:

  • 谢谢,是的,它有效,我之前尝试过。我只是想换一种方式。
猜你喜欢
  • 2019-05-15
  • 2013-01-02
  • 1970-01-01
  • 2015-11-16
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多