将两个数据源绑定到一个网格中

时间:2011-05-05 19:35:58

标签: asp.net

我有两个输入控件,我需要通过它来浏览和上传文档。

下面是我的ascx

我需要在gridview中上传两个文件。

下面是关于我如何尝试实现此目的的代码。我正在为第一次上传创建一个数据表,然后为第二次上传创建第二个数据表,然后将这两个数据合并为一个新的组合并将其指定为gridview的数据源。

  namespace Sharepoint.WebParts.Upload_WebPart
  {
  public partial class Upload_WebPartUserControl : UserControl
   {

    protected void Page_Load(object sender, EventArgs e)
    {
        this.btnUpload.Click += new EventHandler(btnUploadUploadClick);
        this.uploadsupport.Click+=new EventHandler(uploadsupport_Click);
        this.btnSubmit.Click += new EventHandler(btnSubmit_Click);
        this.dgdUpload.RowDeleting += new GridViewDeleteEventHandler(dgdUpload_RowDeleting);
    }

    protected void btnUploadUploadClick(object sender, EventArgs e)
    {
                        fileName = System.IO.Path.GetFileName(inputFile.PostedFile.FileName);
            string x = Path.GetExtension(fileName);
            if (fileName != "")
                {
                    if (x == ".zip")
                    {
                        string _fileTime = DateTime.Now.ToFileTime().ToString();
                    string _fileorgPath = System.IO.Path.GetFullPath(inputFile.PostedFile.FileName);
                    string _newfilePath = _fileTime + "~" + fileName;
                    length = (inputFile.PostedFile.InputStream.Length) / 1024;
                    string tempFolder = Environment.GetEnvironmentVariable("TEMP");
                    string _filepath = tempFolder + _newfilePath;
                    inputFile.PostedFile.SaveAs(_filepath);
                    AddRow(fileName, _filepath, length);
                    lblMessage.Text = "Successfully Added in List";
                }
                else
                {
                    lblMessage.Text = "Please upload a zip file";
                    return;
                }
            }

            else
            {
                lblMessage.Text = "Select a File";
                return;
            }

    }
   private void AddMoreColumns()
    {
         dt = new DataTable("DT");
         dc = new DataColumn("FileName", Type.GetType("System.String"));
         dt.Columns.Add(dc);
         dc = new DataColumn("FilePath", Type.GetType("System.String"));
         dt.Columns.Add(dc);
         dc = new DataColumn("FileSize", Type.GetType("System.String"));
         dt.Columns.Add(dc);
         dc = new DataColumn("KB", Type.GetType("System.String"));
         dt.Columns.Add(dc);
         Page.Session["DT"] = dt; 

    }

    private void AddRow(string file, string path, double length)
    {
        dt = (DataTable)Page.Session["DT"];

        if (dt == null)
        {
            AddMoreColumns();
        }
        dr = dt.NewRow();
        dr["FileName"] = file;
        dr["FilePath"] = path;           
        dr["FileSize"] = Convert.ToString(length);
        dr["KB"] = "KB";          
        dt.Rows.Add(dr);
        Page.Session["DT"] = dt;

    }

    Similary i add rows to the datatable dt1.

    protected void bindgridview()
    {
        dt = (DataTable)Page.Session["DT"];
        dt1 = (DataTable)Page.Session["DT1"];

        joineddt = (DataTable)Page.Session["Files"];
        if (joineddt == null)
        {
            joineddt = dt.Copy();
            joineddt.Merge(dt1);
        }

        this.dgdUpload.DataSource = joineddt;
        this.dgdUpload.DataBind();
        Page.Session["Files"] = joineddt;

    }}

}

请帮我纠正这个,也有一种简单的方法来实现这一点。

1 个答案:

答案 0 :(得分:1)

您无法同时数据绑定到多个数据源。如果数据表joineddt中没有SupportName,那么您的代码将无效。

您不应该尝试将finagle 2数据源尝试到一个GridView中,而应创建一个数据源,其中包含您希望在数据源的一行中的GridView行中显示的所有数据。