如何引用数据集中的文件上传控件

本文关键字:集中 文件 控件 数据集 数据 何引用 引用 | 更新日期: 2023-09-27 18:31:30

在我的程序中,当用户想要编辑记录并按下"编辑"按钮时,将打开一个新窗口,其中包含所有字段,并且记录信息将呈现到相应的字段中,为用户提供编辑所需任何字段信息的选项。

我已将文件上传控件添加到我的网络表单字段中。但是我不确定如何在我的新弹出窗口中引用文件上传控件..我不确定我是否非常清楚地解释了我的问题,但我会尝试在以下代码的帮助下解释它:

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
     lblSet.Text = GridView1.Rows[e.NewEditIndex].Cells[2].Text;
     MultiView1.SetActiveView(vRecord);
     btnSave.Visible = false;
     btnBacktoHome.Visible = true;
     //this.lblMedium.Text = GridView1.Rows[e.NewEditIndex].Cells[1].Text;

     using (SqlConnection con = new SqlConnection("Data Source=MEHDI-PC''SQLEXPRESS;Initial Catalog=PIMS;Integrated Security=True"))
     {
         using (SqlCommand cmd = new SqlCommand())
         {
             String sql = "select [DocumentID],[Ref],[Subject],[Src],[Dst],[Medium],[Date_Printed],[Date_Received],[Document_Type],[Action_Required],[Due_Date],[Actual_Date],[Content],[Tag],[Issue_No],[Attachment],[Notes],[Assigned_To],[Reply_Ref],[Priority],[Status],[Response],[Physical_File_No],[Physical_Rack_Location] from dbo.Documents1 where [DocumentId]=N'" + GridView1.Rows[e.NewEditIndex].Cells[2].Text + "'";
             cmd.Connection = con;
             cmd.CommandText = sql;
             con.Open();
             //SqlDataAdapter da = new SqlDataAdapter(sql,con);
             //DataTable dt = new DataTable();
             DataSet ds = new DataSet();
             using (SqlDataAdapter adp = new SqlDataAdapter(cmd))
             {
                 adp.Fill(ds);
             }

             this.txtRef.Text = ds.Tables[0].Rows[0][1].ToString();
             this.txtSubject.Text = ds.Tables[0].Rows[0][2].ToString();
             this.ddlSource.Text = ds.Tables[0].Rows[0][3].ToString();
             this.ddlDestination.Text = ds.Tables[0].Rows[0][4].ToString();
             this.ddlMedium.Text = ds.Tables[0].Rows[0][5].ToString();
             this.txtDatePrinted.Text = ds.Tables[0].Rows[0][6].ToString();
             this.txtDateReceived.Text = ds.Tables[0].Rows[0][7].ToString();
             this.ddlDocumentType.Text = ds.Tables[0].Rows[0][8].ToString();
             this.cbxAction.Checked = ds.Tables[0].Rows[0][9].Equals(cbxAction.Checked);
             this.txtDueDate.Text = ds.Tables[0].Rows[0][10].ToString();
             this.txtActualDate.Text = ds.Tables[0].Rows[0][11].ToString();
             this.txtContent.Text = ds.Tables[0].Rows[0][12].ToString();
             this.txtTag.Text = ds.Tables[0].Rows[0][13].ToString();
             this.txtIssue.Text = ds.Tables[0].Rows[0][14].ToString();
             //this.fileupload1 = ds.Tables[0].Rows[0][15] ;
             this.txtNotes.Text = ds.Tables[0].Rows[0][16].ToString();
             this.ddlAssignedTo.Text = ds.Tables[0].Rows[0][17].ToString();
             this.txtReplyRef.Text = ds.Tables[0].Rows[0][18].ToString();
             this.ddlPriority.Text = ds.Tables[0].Rows[0][19].ToString();
             this.ddlStatus.Text = ds.Tables[0].Rows[0][20].ToString();
             this.ddlResponse.Text = ds.Tables[0].Rows[0][21].ToString();
             this.txtPhysicalFileNo.Text = ds.Tables[0].Rows[0][22].ToString();
             this.txtPhysicalRackLocation.Text = ds.Tables[0].Rows[0][23].ToString();
             if (con != null)
             {
                 con.Close();
             }
             btnUpdate.Visible = true;
             btnSearch.Visible = false;
             BindGrid();
         }
     }
}

基本上,当用户单击编辑时,我的代码所做的是,读取sql服务器中的相关记录并将其从那里加载到我的Web表单中的新弹出窗口..将所有信息放在相关字段中。我在网上读到,从SQL读取varbinary数据并将其绑定到Web表单中并不像调用文本数据那么简单。(也许我错了,如果我错了,请纠正我)。我并不真正担心将数据从sql服务器获取到Web表单中,我担心在新窗口中引用上传控件,因为如果用户在弹出窗口中的文件上传控件中添加一个新文件,并且如果我的代码中没有引用它,我的程序会忽略新上传的文件,这是我代码中的一个大缺陷。问题出在以下代码行上:

//this.fileupload1 = ds.Tables[0].Rows[0][15] ;

我已经注释掉了它以供其他代码运行。我被困了整整一个星期。任何帮助将不胜感激。提前谢谢。

如何引用数据集中的文件上传控件

不能将记录绑定到文件上载控件,此控件用于上载文件 下载。

请查看此链接了解如何下载文件。

上传控件应该用于替换现有文件,

当用户选择替换它时,即用户将上传一个新文件,并且在您的业务逻辑中,您需要使用现有记录 ID 更新此记录。

在您的情况下,我会将附件的 ID 绑定到网格中的隐藏字段,而不考虑上传控件。更新记录时,检查文件上载控件是否具有文件,然后使用附件的值更新附件。

编辑:从这里开始,我相信您需要添加以下内容:

FileUpload file = ((FileUpload)(GridView1.Rows[e.NewEditIndex].FindControl("myFileUploadControl")));

您需要为您的文件上传控件提供 myFileUploadControl(或任何您想要的)的 ID

此问题还讨论了在网格视图中使用文件上载控件。