数据库到数据表并显示结果的链接

时间:2014-09-24 07:40:04

标签: c# sql datatable dataset

我有这个问题:

我有一个包含一些表格的数据库,即时填充包含所有信息的数据集并将其发布在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();
        } 
    }
}

1 个答案:

答案 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并再次从数据库中获取数据。