在我的程序中,当用户想要编辑记录并按下编辑按钮时,会打开一个新窗口,其中所有字段和记录信息将呈现到相应的字段中,从而为用户提供编辑所需字段信息的选项。
我在我的webform字段中添加了一个fileupload控件。但是我不知道如何在我弹出的新窗口中引用fileupload控件。我不确定我是否会非常清楚地解释我的问题,但我会尝试在下面的代码的帮助下解释它:
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 server中的相关记录并将其从那里加载到我的webform中的新弹出窗口..将所有信息放在相关字段中。 我在网上读到,从sql读取varbinary数据并将其绑定到webform并不像调用文本数据那么简单。 (也许我错了,如果我是,请纠正我)。我并不担心将数据从sql server提取到webform中,我担心在新窗口中引用上传控件,因为如果用户在弹出窗口中的fileupload控件中添加一个新文件,并且在我的窗口中没有引用它代码,我的程序忽略了新上传的文件,这是我的代码中的一个大缺陷。 这行代码存在问题:
//this.fileupload1 = ds.Tables[0].Rows[0][15] ;
我已将其评论为其他代码运行。 我坚持了整整一个星期。任何帮助将非常感激。提前谢谢。
答案 0 :(得分:0)
您无法将记录绑定到文件上传控件,此控件用于上载文件 的不强> 下载。
请查看此link以了解如何下载文件。
上传控件应该用于替换现有文件,当用户选择替换它时,即用户将上传新文件,并且在业务逻辑中,您需要使用现有记录ID更新此记录。
在你的情况下,我将附件的ID绑定到网格中的隐藏字段,并单独保留上传控件。更新记录时,检查文件上载控件是否有文件,然后使用附件的值更新附件。
修改:来自here我相信您需要添加以下内容:
FileUpload file = ((FileUpload)(GridView1.Rows[e.NewEditIndex].FindControl("myFileUploadControl")));
您需要为文件上传控件提供myFileUploadControl(或任何您想要的)的ID
此question还讨论了在gridview中使用fileupload控件。