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

时间:2018-07-27 12:43:44

标签: c# asp.net image gridview nested-gridview

我有一个父级和子级GridView。
Child网格视图由存储在父DataSet表中的值填充。

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()是返回带有报告代码的数据集的函数,类似于 Report Code Image

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

我们将不胜感激,感谢您提前感谢。


编辑
现在我需要下载一个文件,该文件存在于子gridview中。
做到这一点的最佳方法是什么/
我应该通过什么论点? (例如其地址或什么?)
我需要在不折叠子gridview的情况下下载文件。 child grid image

1 个答案:

答案 0 :(得分:0)

当您使用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");