嵌套的 Gridview 在每一行 DataBound 上显示相同的数据并在子 Gridview 中下载文件

Nested Gridview Showing Same Data on every row DataBound & downloading a file within Child Gridview

我有一个父 GridView 和一个子 GridView。
子 gridview 由存储在父 DataSet Table.

中的值填充

child Gridview with Same Data

我需要我的行根据 ReportCode 获取数据。

这是我的代码:-

protected void GridView1_OnRowDataBound(object sender, GridViewRowEventArgs e)
    {
        try
        {
            DataSet dstReportsCodes = getReportCode();
            dst = new DataSet();
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                string pub_id = GridView1.DataKeys[e.Row.RowIndex].Value.ToString();
                dm.Open();
                //dst = dm.ApprovalExpense("SelectForReport", "Exp-4OWTR", "", "", "", "", "", "");    // which are the expenses
                if (dstReportsCodes.Tables[0].Rows.Count > 0)
                {
                    for (int i = 0; i < dstReportsCodes.Tables[0].Rows.Count; i++)
                    {
                        dst = null;
                        dst = dm.ApprovalExpense("SelectForReport", Convert.ToString(dstReportsCodes.Tables[0].Rows[i]["ReportCode"]), "", "", "", "", "", "");
                        GridView pubTitle = (GridView)e.Row.FindControl("GridView2");
                        pubTitle.DataSource = dst.Tables[0];
                        pubTitle.DataBind();
                    }
                }

                dm.Close();
            }
        }
        catch (Exception ex) { lblErrorText.Text = ex.ToString(); }
    }

注意:getReportCode() 是返回带有报告代码的数据集的函数,ReportCode 的获取方式如下 Report Code Image

现在这些报告代码用于获取 Child Gridview 每一行的数据,详细信息正常但每次都绑定相同的数据。

非常感谢您的一点帮助,提前谢谢。


编辑
现在我需要下载一个存在于子 gridview 中的文件。
最好的方法是什么/
我应该通过什么论点? (比如地址之类的?)
我需要在不折叠子 gridview 的情况下下载文件。 child grid image

当您使用 RowDataBound 时,您已经拥有从 getReportCode() 方法获取的那些行项目。您所要做的就是在使用 RowDataBound 进行迭代时读取这些项目。在您的情况下,您可以使用以下代码来读取 ReportCode。

string reportCode = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "ReportCode"));

接下来,您所要做的就是将 reportCode 作为参数传递到您的 ApprovalExpense 方法中。

dst = dm.ApprovalExpense("SelectForReport", reportCode, "", "", "", "", "", "");
GridView pubTitle = (GridView)e.Row.FindControl("GridView2");