简体   繁体   English

将 gridview 传递到另一个页面 ASP.net

[英]pass gridview to another page ASP.net

i have a page that i use search in it and i want to pass the grid view to a result page after clicking on the button?我有一个页面,我在其中使用搜索,我想在单击按钮后将网格视图传递到结果页面? this button is search button and this code is working in default.aspx.cs with no problem but when ever i removed the grid and put it in the results.aspx i have an error in the last 3 lines.此按钮是搜索按钮,此代码在 default.aspx.cs 中运行没有问题,但是当我删除网格并将其放入 results.aspx 时,我在最后 3 行中出现错误。 default.aspx.cs默认.aspx.cs

    protected void Button1_Click(object sender, EventArgs e)
    {
        string searchby;
        searchby = DropDownList1.SelectedItem.Text;
        string str = string.Empty;
    switch (searchby)        {
        case "Search By":
            str = "select * from UserInfo u inner join TeamDB T on U.EMC_ID = T.EMC_ID where u.Name like '%' + @search + '%'";
                break;
        case "EMC ID":
            int searchID = int.Parse(TextBox1.Text);

            str = "select U.EMC_ID, Name, Email, CiscoPhone ,T.Department ,T.TeamName , T.ManagerName, T.ManagerID from UserInfo U inner join TeamDB T on U.EMC_ID = T.EMC_ID where U.EMC_ID =" + searchID;
            break;
        case "Name":
            str = "select EMC_ID, Name, Email, CiscoPhone from UserInfo where Name like '%' + @search + '%'";
            break;
        case "Email":
            str = "select EMC_ID, Name, Email, CiscoPhone from UserInfo where Email like '%' + @search + '%'";
            break;
        case "Provider":
            str = "select EMC_ID, Name, Email, CiscoPhone, Provider ,DataSIM, DataLineNumber, Data_IMEA from UserInfo where Provider like '%' + @search + '%'";
            break;
        case "USB Data Sim":
            Int64 searchSIM = Int64.Parse(TextBox1.Text);
            str = "select EMC_ID, Name, Email, CiscoPhone, Provider ,DataSIM, DataLineNumber, Data_IMEA from UserInfo where DataSIM  =" + searchSIM;
            break;
        case "USB Data line Number":
            Int64 searchLine = Int64.Parse(TextBox1.Text);
            str = "select EMC_ID, Name, Email, CiscoPhone, Provider ,DataSIM, DataLineNumber, Data_IMEA from UserInfo where DataLineNumber  =" + searchLine;
            break;
        case "USB Data IMEA":
            Int64 searchIMEA = Int64.Parse(TextBox1.Text);
            str = "select EMC_ID, Name, Email, CiscoPhone, Provider ,DataSIM, DataLineNumber, Data_IMEA from UserInfo where Data_IMEA  =" + searchIMEA;

            break;
        case "Cisco Phone":
            int searchcisco = int.Parse(TextBox1.Text);
            str = "select EMC_ID, Name, Email, CiscoPhone from UserInfo where CiscoPhone =" + searchcisco;

            break;
        case "Team Name":
            str = "select U.EMC_ID, U.Name, T.TeamName, T.ManagerID, T.ManagerName from UserInfo u inner join TeamDB T on U.EMC_ID = T.EMC_ID where T.TeamName like '%' + @search + '%'";
            break;

        default:
            Console.WriteLine("Please make a selection!");  
            break;
    }
        SqlCommand xp = new SqlCommand(str, did);
        xp.Parameters.Add("@search", SqlDbType.NVarChar).Value = TextBox1.Text; 

        did.Open();
        xp.ExecuteNonQuery();
        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = xp;
        DataSet ds = new DataSet();
        da.Fill(ds, "EMC_ID");
        GridView1.DataSource = ds;
        GridView1.DataBind();
        GridView1.Visible = true;
    }

i want to redirect this code to open in a new page which is Results.aspx我想重定向此代码以在新页面中打开,即 Results.aspx

You want to implement searching, and have the results show up on a search page?您想实施搜索,并将结果显示在搜索页面上? The solution then isn't to pass the GridView (which doesn't make sense because it's a UI element anyways) but instead to pass the search query, and perform the search on the results page.然后解决方案不是传递 GridView(这没有意义,因为它无论如何都是 UI 元素)而是传递搜索查询,并在结果页面上执行搜索。 It should end up being something like this:它最终应该是这样的:

Search page搜索页面

protected void SearchBtn_Click(object sender, EventArgs e)
{
    Response.Redirect(String.Format("~/Results.aspx?search={0}",
        Server.UrlEncode(SearchTB.Text));
}

Results page结果页面

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        //run the query, bind results to GridView
    }
}

If you want an even better user interface, your searching and result displaying should all be done on one page, and you should use AJAX to send the search terms to the results and get them back.如果你想要一个更好的用户界面,你的搜索和结果显示都应该在一个页面上完成,你应该使用 AJAX 将搜索词发送到结果中并让它们返回。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM