C# 按下按钮时显示网格中的详细信息
我有一个由人的细节组成的Gridview, 我还有一个文本框和搜索按钮,当我输入一个特定的人的名字时 它应该显示他自己的详细信息以及来自thr网格视图的标题 这是我的密码C# 按下按钮时显示网格中的详细信息,c#,asp.net,gridview,C#,Asp.net,Gridview,我有一个由人的细节组成的Gridview, 我还有一个文本框和搜索按钮,当我输入一个特定的人的名字时 它应该显示他自己的详细信息以及来自thr网格视图的标题 这是我的密码 protected void Button1_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(@"Data Source=ENTERKEY001;Initial Catalog=ThirdJanuaryDb;Integr
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(@"Data Source=ENTERKEY001;Initial Catalog=ThirdJanuaryDb;Integrated Security=True");//DataBase Connection
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SearchSp";
cmd.Parameters.Add("@NAME", SqlDbType.VarChar).Value = TextBox4.Text.Trim();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
GridView1.DataBind();
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();
}
请帮帮我…我发现有几件事不对
- 绑定gridview后,可以使用
执行查询。事实上,你什么都不绑。这里不需要ExecuteNonQuery
,因为我认为您的存储过程会返回一些数据,而不仅仅是执行ExecuteNonQuery
- 使用
获取所有值并将其分配给ExecuteReader
属性DataSource
- 作为一种最佳做法,使用来处理
、SqlConnection
和SqlCommand
SqlDataReader
您不应该使用数据适配器,但下面是固定代码,它的工作原理如下:
SqlConnection con = new SqlConnection(@"Data Source=ENTERKEY001;Initial Catalog=ThirdJanuaryDb;Integrated Security=True");//DataBase Connection
con.Open();
try
{
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SearchSp";
cmd.Parameters.AddWithValue("@NAME", TextBox4.Text.Trim());
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}
finally
{
con.Close();
}
那么,到底是什么问题呢?您是否收到任何错误或异常消息?你能说得更具体点吗?我的代码是。。。con.Open();SqlCommand cmd=新的SqlCommand();cmd.CommandType=CommandType.storedProcess;cmd.CommandText=“SearchSp”;cmd.Parameters.Add(“@NAME”,SqlDbType.VarChar).Value=TextBox4.Text.Trim();SqlDataAdapter da=新的SqlDataAdapter(cmd);数据集ds=新数据集();da.填充(ds,“ss”);GridView1.DataSource=ds.Tables[“ss”];GridView1.DataBind();cmd.Connection=con;cmd.ExecuteNonQuery();con.Close();我的错误是..Fill:SelectCommand.Connection属性尚未初始化。放置上述代码时,它会给我一条错误消息,告诉我“DataSource和DataSourceID都是在“GridView1”上定义的。请删除一个定义。”这意味着已经存在与数据冲突的列。检查网格视图。它没有给我一个错误。它只是闪烁,网格上看不到任何东西。你可以给我一个存储过程的示例结果,我将修改代码以使用datareader,这是从数据库读取的正确方式。有两个表“ThirdJanuaryTable”和“SixthJanuaryTable”ALTER procedure[dbo]。[SearchSp]@NAME varchar(255)作为开始选择ThirdJanuaryTable.NAME,ThirdJanuaryTable.ID,ThirdJanuaryTable.ADDRESS,ThirdJanuaryTable.GENDER,SixthJanuaryTable.MOBILENO从ThirdJanuaryTable,SixthJanuaryTable中,其中NAME=@NAME end将上述代码放置在“DataValueField”和“DataTextField”上,并用红色下划线标记@AdhithAshok将其删除。
using(SqlConnection con = new SqlConnection(CnnStr))
using(SqlCommand cmd = con.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SearchSp";
cmd.Parameters.Add("@NAME", SqlDbType.VarChar).Value = TextBox4.Text.Trim();
using(SqlDataReader dr = cmd.ExecuteReader())
{
GridView1.DataSource = dr;
GridView1.DataBind();
}
}
SqlConnection con = new SqlConnection(@"Data Source=ENTERKEY001;Initial Catalog=ThirdJanuaryDb;Integrated Security=True");//DataBase Connection
con.Open();
try
{
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SearchSp";
cmd.Parameters.AddWithValue("@NAME", TextBox4.Text.Trim());
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}
finally
{
con.Close();
}