将数据从gridview传递到新页面

时间:2017-09-22 02:43:26

标签: c# asp.net gridview

这是非常简单的事情,但我坚持了很久。 所以我创建了一个数据表并将数据放到gridview上。大 使Sheet_id可点击,当点击它时,我将指向一个新页面。 但是我想获取我从gridview中选择的sheet_id,以便将其用于其他sql查询。

如何使用linkbutton将sheet_id从一个页面传递到另一个页面。

这是ExistingSheet.aspx

<asp:GridView ID="grdSheet" runat="server" AutoGenerateColumns="False"
    CssClass="tablesorter table table-bordered table-hover table-striped tblCtr"
    >
    <Columns>
        <asp:TemplateField HeaderText="">
            <ItemTemplate>
                <asp:Label ID="hdnSheetId" runat="server" Text='<%# Eval("SNO")%>'> </asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Sheet ID">
            <ItemTemplate>
                <asp:LinkButton runat="server" ID="sheetId" CommandName="sheet_id" CommandArgument='<%# Eval( "sheet_id")%>' Text='<%# Eval( "sheet_id")%>' OnClick="" PostBackUrl="~/SheetDetail.aspx">
                </asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>

这是ExistingSheet.aspx.cs

 protected void grdSheet_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        Response.Redirect("SheetDetail.aspx" + e.CommandArgument);
    }

这是我想要将数据提供给SheetDetail.aspx.cs的页面

  public void FillGridSheet()
    {
        eExistingSheetQuery existingSheetQuery = new eExistingSheetQuery();
        grdSheetDetail.DataSource = existingSheetQuery.DisplayReportSheet(**SHEET ID TO BE PLACED HERE**);
        grdSheetDetail.DataBind();
    }

这是eExistingSheetQuery.cs

 public DataTable DisplayReportSheet(string sheetId)
{
       try
    {

    conn = new SqlConnection(estocktake);
    conn.Open();

    DataTable dtd = new DataTable();
    GridView gvd = new GridView();

    cmds = new SqlCommand("Select ROW_NUMBER( ) OVER (order by sheet_id)  as SNO, csd.Barcode, csd.ItemId, pm.Description, csd.Quantity " +
                "from CountSheetDetails csd " +
                "join ProductMaster pm on pm.Barcode = csd.Barcode and pm.ItemId = csd.ItemId " +
                "where csd.SheetId = '" + sheetId + "' and pm.Status ='A';",conn);
    adpt = new SqlDataAdapter();

    adpt.SelectCommand = cmds;

    cmds.ExecuteNonQuery();
    adpt.Fill(dtd);
    conn.Close();
    conn.Dispose();

    for (int i = 0; i < dtd.Rows.Count; i++)
    {
        dtd.Rows[i]["SNO"] = i + 1;
    }
    return dtd;
    }
       catch (Exception)
       {
           conn.Close();
           conn.Dispose();
           return null;
       }
}

我想使用id来将它用于我将从SQL中提取的下一个查询

我见过几个例子,但我不认为我真的明白。任何建议都会很棒。谢谢!

1 个答案:

答案 0 :(得分:0)

我认为您提出的问题是将数据从一个GridView传递到另一个,但在另一个页面上的方式?

使用循环机制,建议您循环浏览来源Gridview并将其复制到目标GridView。首先在单页上首先开始工作 - 即GridViewGridView

例如,您需要一个触发器。这是一个获取数据的Button触发器......

  

GridView1 =您的源GridView

     

GridView2 =您的目标GridView

protected void Button1_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        DataRow dr;

        dt.Columns.Add(new DataColumn("ColumnName1"));
        dt.Columns.Add(new DataColumn("ColumnName2"));
        dt.Columns.Add(new DataColumn("ColumnName3"));

        foreach (GridViewRow gvr in GridView1.Rows)
        {            
            if (((CheckBox)gvr.Cells[4].FindControl("CheckBox")).Checked == true)
            {
                dr = dt.NewRow();
                dr["ColumnName1"] = ((Label)gvr.Cells[0].FindControl("Label")).Text;
                dr["ColumnName2"] = ((Label)gvr.Cells[1].FindControl("Label")).Text;
                dr["ColumnName3"] = ((Label)gvr.Cells[2].FindControl("Label")).Text;
                dt.Rows.Add(dr);
            }
        }

        foreach (GridViewRow gvr in GridView2.Rows)
        {
            dr = dt.NewRow();
            dr["ColumnName1"] = ((Label)gvr.Cells[0].FindControl("Label")).Text;
            dr["ColumnName2"] = ((Label)gvr.Cells[1].FindControl("Label")).Text;
            dr["ColumnName3"] = ((Label)gvr.Cells[2].FindControl("Label")).Text;
            dt.Rows.Add(dr);
        }

        GridView2.DataSource = dt;
        GridView2.DataBind();
    }

一旦你开始工作,按照自己的方式,我们就会想出如何在不同的网址之间传递数据。

一种方法是使用SessionState []。 Here

这个概念基本上是将数据传递到内存中,即SessionState或ViewState,然后通过它的PageLoad()事件从接收页面中检索数据。或者您将数据保存到临时表中,然后使用标准DataSource属性将其重新加载到新页面上。

示例herehere