繁体   English   中英

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

[英]pass gridview to another page ASP.net

我有一个页面,我在其中使用搜索,我想在单击按钮后将网格视图传递到结果页面? 此按钮是搜索按钮,此代码在 default.aspx.cs 中运行没有问题,但是当我删除网格并将其放入 results.aspx 时,我在最后 3 行中出现错误。 默认.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;
    }

我想重定向此代码以在新页面中打开,即 Results.aspx

您想实施搜索,并将结果显示在搜索页面上? 然后解决方案不是传递 GridView(这没有意义,因为它无论如何都是 UI 元素)而是传递搜索查询,并在结果页面上执行搜索。 它最终应该是这样的:

搜索页面

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

结果页面

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

如果你想要一个更好的用户界面,你的搜索和结果显示都应该在一个页面上完成,你应该使用 AJAX 将搜索词发送到结果中并让它们返回。

暂无
暂无

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

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