2011-05-05 73 views
0

我有兩個輸入控件,通過它我需要瀏覽和上載文檔。將兩個數據源綁定到一個網格中

下面是我的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; 

    }} 

}

請幫我解決這個問題,也有一個簡單的方法來實現這一目標。

+0

這裏有很多代碼需要梳理,所以讓我們先從一些初始的調試開始......錯誤的核心是網格綁定假定存在「SupportName」列。 (這是你的第二個'HyperLinkField'元素。)表'joineddt'在運行時是否有這樣的列? – David 2011-05-05 19:49:46

+0

我通過了這個錯誤。現在,我得到了2行,其中我應該得到兩個附件的一行...你可以放在一些想法請 – Janet 2011-05-05 20:18:38

+0

只需要更多的調試你的一部分。那些排從哪裏來?他們每次什麼時候被添加到表格中?找到他們被添加的地方,其中將是需要改變的邏輯。也許一個被添加,然後第二個被添加?如果是這樣的話,你可能希望第二個是更新而不是插入。也許他們都是同時添加的?然後,您可能需要編輯它們來自哪裏或如何添加它們,或者手動合併它們並在事後刪除第二個。等等。 – David 2011-05-05 20:21:55

回答

1

您無法同時綁定到多個數據源。如果數據表joineddt沒有SupportName,那麼你的代碼將無法工作。

與其試圖將finagle 2數據源放入一個GridView中,您應該創建一個數據源,該數據源包含您希望在數據源的一行中的GridView行中顯示的所有數據。

相關問題