我有这个问题:
我有一个包含一些表格的数据库,即时填充包含所有信息的数据集并将其发布在gridview上。
整个想法是在用户数据库中搜索,我现在要做的是从数据集中排除信息使用表中的ID,这样我就可以将搜索结果重定向到新的配置文件,这必须完成通过链接。
所以我想要的是在超链接中获得结果,然后点击它们将用户重定向到配置文件。
这是一个网络应用。
namespace DisplayingImages
{
public partial class WebForm7 : System.Web.UI.Page
{
SqlConnection con = new SqlConnection("ConnectionString");
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click1(object sender, EventArgs e)
{
int i=0;
DataTable PassRecord = new DataTable();
String str = "select First_Name,Surname from ID where (First_Name like '%'+ @search +'%' ) OR (Surname like '%'+ @search +'%') OR (Email_Account like '%'+ @search +'%')";
SqlCommand Srch = new SqlCommand(str, con);
Srch.Parameters.Add("@search", SqlDbType.NVarChar).Value = TextBox1.Text;
con.Open();
Srch.ExecuteNonQuery();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = Srch;
DataTable dt = new DataTable();
DataSet ds = new DataSet();
GridView1.DataSource = ds;
GridView1.DataBind();
con.Close();
}
}
}
答案 0 :(得分:0)
您使用空数据集。你必须填写它,否则你将有一个空的gridview。
da.Fill(ds);
像Soner说的那样你不必使用ExecuteNonQuery。请改用ExecuteQuery。
ExecuteQuery:当您从数据库中选择数据时,请使用此
ExecuteNonQuery:当您将数据插入或更新到数据库中时,请使用此
您可能已经使用过RowDataBound事件。
我从这段代码中看不出来。
但在那里你必须填写链接。
如果你没有它,那么这里是一个例子。
在前端你做这样的事情
<asp:GridView ID="Gridview" runat="server" OnRowDataBound="Gridview_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Hyperlink runat="server" ID="link" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
并在后面的代码中。
protected void Gridview_RowDataBound(object sender, GridViewRowEventArgs e)
{
//Get data row view
DataRowView dataRow = ((e.Row.DataItem)DataRowView);
if (e.Row.RowType == DataControlRowType.DataRow)
{
var link = ((HyperLink)e.FindControl("Link"));
link.Text = "some text";
link.NavigateUrl = String.Format("{0}?id={1}", page, dataRow.ID);
}
}
我已经这样做了,所以它不是完全复制粘贴,但你明白了。
你也可以绑定一个onclick事件,但这会让它更难一些。
在目标URL中,您可以使用查询字符串来读取id并再次从数据库中获取数据。