Microsoft Developer Network >
Página Inicial dos Fóruns
>
Fóruns do Web Development
>
ASP .NET
>
Erro enviando arquivo no FormView
Erro enviando arquivo no FormView
- Esta ocorrendo o seguinte erro na minha pagina:
Erro de Servidor no Aplicativo '/HomeIsotec'.
Referência de objeto não definida para uma instância de um objeto.
Descrição: Ocorreu uma exceção não tratada durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.
Detalhes da Exceção: System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto.
Erro de Origem:
Linha 63:
Linha 64: //
Linha 65: DropDownListANO.Text = "2009";
Linha 66:
Linha 67:
Arquivo de Origem: c:\HomeIsotec\Administracao\AD_ResultadoGDetalhe.aspx.cs Linha: 65
Rastreamento de Pilha:
[NullReferenceException: Referência de objeto não definida para uma instância de um objeto.]
Administracao_AD_ResultadoGDetalhe.FormView1_DataBound(Object sender, EventArgs e) in c:\HomeIsotec\Administracao\AD_ResultadoGDetalhe.aspx.cs:65
System.Web.UI.WebControls.BaseDataBoundControl.OnDataBound(EventArgs e) +97
System.Web.UI.WebControls.FormView.EnsureDataBound() +157
System.Web.UI.WebControls.BaseDataBoundControl.OnPreRender(EventArgs e) +22
System.Web.UI.Control.PreRenderRecursiveInternal() +80
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842
Minha linha de codigo abaixo:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.IO;
using System.Data.SqlClient;
using System.Web.Configuration;
public partial class Administracao_AD_ResultadoGDetalhe : System.Web.UI.Page
{
protected void FormView1_DataBound(object sender, EventArgs e)
{
MembershipUser user = Membership.GetUser();
TextBox UserNameTextBox = (TextBox)FormView1.FindControl("UserNameTextBox");
TextBox DateTextBox = (TextBox)FormView1.FindControl("DateTextBox");
DropDownList DropDownListANO = (DropDownList)FormView1.FindControl("DropDownListANO");
if (User.Identity.IsAuthenticated == true)
{
UserNameTextBox.Text = user.UserName;
UserNameTextBox2.Text = user.UserName;
}
DateTextBox.Text = DateTime.Now.ToString();
SqlDataSource1.DataBind();
GridView1.DataBind();
//
DropDownListANO.Text = "2009";
//Verifica controle de acesso
string _connectionString = WebConfigurationManager.ConnectionStrings["CONNECTIONSTRING"].ConnectionString;
string _strSQL = "SELECT * FROM AD_CONTROLEA WHERE USUARIO = @Usuario ORDER BY DETALHE_D_CC DESC";
SqlConnection con = new SqlConnection(_connectionString);
SqlCommand cmd = new SqlCommand(_strSQL, con);
cmd.Parameters.AddWithValue("@Usuario", UserNameTextBox.Text);
cmd.CommandType = CommandType.Text;
using (con)
{
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
//Se existe na tabela habilita FormView e GridView
FormView1.Enabled = true;
GridView1.Enabled = true;
//Upload FormView
string _DetalheUpload = (string)dr["DETALHE_UPLOAD"];
if (_DetalheUpload == "Sim")
{
FormView1.Enabled = true;
GridView1.Columns[6].Visible = true;
}
else
{
FormView1.Enabled = false;
GridView1.Columns[6].Visible = false;
}
//Download GridView
string _DetalheDownload = (string)dr["DETALHE_D_CC"];
if (_DetalheDownload == "Todos")
{
GridView1.DataSourceID = "SqlDataSourceTodos";
}
else
{
GridView1.DataSourceID = "SqlDataSource1";
}
}
else
{
//Se não existe na tabela desabilita FormView e GridView
FormView1.Enabled = false;
GridView1.Enabled = false;
GridView1.DataSourceID = "SqlDataSource1";
}
}
}
protected void FormView1_ItemInserting(Object sender, FormViewInsertEventArgs e)
{
Label lbResultado = (Label)FormView1.FindControl("lbResultado");
FileUpload FileUpload1 = (FileUpload)FormView1.FindControl("FileUpload1");
TextBox LINK_RG = (TextBox)FormView1.FindControl("LINK_RG");
if (FileUpload1.PostedFile.ContentLength > 0)
{
try
{
string destino = MapPath("~/Administracao/Upload/RelatorioG/");
string fn = Path.GetFileName(FileUpload1.PostedFile.FileName);
FileUpload1.PostedFile.SaveAs(destino + fn);
lbResultado.Text = "Arquivo enviado com sucesso!";
e.Values["LINK_RG"] = "~/Administracao/Upload/RelatorioG/" + fn.ToString();
//---
}
catch (Exception ex)
{
lbResultado.Text = ex.Message;
}
}
}
}
Respostas
- Faça assim
if (formview.CurrentMode == FormViewMode.Insert)
{
COLOQUE SEU CÓDIGO AQUI
}- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 12:53
- Coloquei minha variável pq vc coloca o nome que quiser para salvar na viewState.
Faça assim
1-Em cima do pageLoad coloque essa propriedade
public string Varano
{
get
{
if (ViewState["Varano"] == null)
return "";
else
return ViewState["Varano"].ToString();
}
set
{
ViewState.Add("Varano", value);
}
}
2-Deixe o databound for formview assim
if (FormView1.CurrentMode == FormViewMode.Insert)
{
MembershipUser user = Membership.GetUser();
TextBox UserNameTextBox = (TextBox)FormView1.FindControl("UserNameTextBox");
TextBox DateTextBox = (TextBox)FormView1.FindControl("DateTextBox");
DropDownList DropDownListANO = (DropDownList)FormView1.FindControl("DropDownListANO");
if (User.Identity.IsAuthenticated == true)
{
UserNameTextBox.Text = user.UserName;
UserNameTextBox2.Text = user.UserName;
}
DateTextBox.Text = DateTime.Now.ToString();
SqlDataSource1.DataBind();
GridView1.DataBind();
//----
DropDownListANO.Text = Varano;
//Verifica controle de acesso
string _connectionString = WebConfigurationManager.ConnectionStrings["CONNECTIONSTRING"].ConnectionString;
string _strSQL = "SELECT * FROM AD_CONTROLEA WHERE USUARIO = @Usuario ORDER BY DETALHE_D_CC DESC";
SqlConnection con = new SqlConnection(_connectionString);
SqlCommand cmd = new SqlCommand(_strSQL, con);
cmd.Parameters.AddWithValue("@Usuario", UserNameTextBox.Text);
cmd.CommandType = CommandType.Text;
using (con)
{
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
//Se existe na tabela habilita FormView e GridView
FormView1.Enabled = true;
GridView1.Enabled = true;
//Upload FormView
string _DetalheUpload = (string)dr["DETALHE_UPLOAD"];
if (_DetalheUpload == "Sim")
{
FormView1.Enabled = true;
GridView1.Columns[6].Visible = true;
}
else
{
FormView1.Enabled = false;
GridView1.Columns[6].Visible = false;
}
//Download GridView
string _DetalheDownload = (string)dr["DETALHE_D_CC"];
if (_DetalheDownload == "Todos")
{
GridView1.DataSourceID = "SqlDataSourceTodos";
}
else
{
GridView1.DataSourceID = "SqlDataSource1";
}
}
else
{
//Se não existe na tabela desabilita FormView e GridView
FormView1.Enabled = false;
GridView1.Enabled = false;
GridView1.DataSourceID = "SqlDataSource1";
}
}
}
3- No Inserting deixe assim
protected void FormView1_ItemInserting(Object sender, FormViewInsertEventArgs e)
{
Label lbResultado = (Label)FormView1.FindControl("lbResultado");
FileUpload FileUpload1 = (FileUpload)FormView1.FindControl("FileUpload1");
TextBox LINK_RG = (TextBox)FormView1.FindControl("LINK_RG");
DropDownList DropDownListANO = (DropDownList)FormView1.FindControl("DropDownListANO");
Varano = DropDownListANO.Text;
if (FileUpload1.PostedFile.ContentLength > 0)
{
try
{
string destino = MapPath("~/Web/Administracao/Upload/RelatorioG/");
string fn = Path.GetFileName(FileUpload1.PostedFile.FileName);
FileUpload1.PostedFile.SaveAs(destino + fn);
lbResultado.Text = "Arquivo enviado com sucesso!";
e.Values["LINK_RG"] = "~/Web/Administracao/Upload/RelatorioG/" + fn.ToString();
//---
}
catch (Exception ex)
{
lbResultado.Text = ex.Message;
}
}
}
}- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 12:53
Todas as Respostas
- Faça assim
if (formview.CurrentMode == FormViewMode.Insert)
{
COLOQUE SEU CÓDIGO AQUI
}- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 12:53
- OK ate ai deu certo, eu so preciso agora criar uma variavel VARANO a qual vai receber o valor do ano informado no DropDownListANO.Text no Evento
protected void FormView1_ItemInserting(Object sender, FormViewInsertEventArgs e)
e depois eu vou recuperar essa variavel no evento protected void FormView1_DataBound(object sender, EventArgs e)
ficando dessa forma:
if (FormView1.CurrentMode == FormViewMode.Insert)
{
DropDownListANO.Text = VARANO;
}
Assim eu consigo sempre manter o ultimo ano inserido.
Como faço isso ? - Faz assim para vc não perder vc pode salvar na viewstate o valor.
- Estou começando agora na area, como eu salvo na viewstate o valor ?
- Segue ae.
//para salvar
ViewState.Add("MinhaVariavel", varano);
//para recuperar
string varano = ViewState["MinhaVariavel"].ToString();
vc pode fazer um propriedade para fazer isso que fica mais bonito o codigo
public string Varano
{
get
{
if (ViewState["Varano"] == null)
return "";
else
return ViewState["Varano"].ToString();
}
set
{
ViewState.Add("Varano", value);
}
} - Não entendi pq vc colocou "MInhaVariavel" sendo que a minha variavel é VARANO.
Vou tentar explicar de acordo com o codigo abaixo:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.IO;
using System.Data.SqlClient;
using System.Web.Configuration;
public partial class Administracao_AD_ResultadoGDetalhe : System.Web.UI.Page
{
protected void FormView1_DataBound(object sender, EventArgs e)
{
MembershipUser user = Membership.GetUser();
TextBox UserNameTextBox = (TextBox)FormView1.FindControl("UserNameTextBox");
TextBox DateTextBox = (TextBox)FormView1.FindControl("DateTextBox");
DropDownList DropDownListANO = (DropDownList)FormView1.FindControl("DropDownListANO");
if (User.Identity.IsAuthenticated == true)
{
UserNameTextBox.Text = user.UserName;
UserNameTextBox2.Text = user.UserName;
}
DateTextBox.Text = DateTime.Now.ToString();
SqlDataSource1.DataBind();
GridView1.DataBind();
//----
if (FormView1.CurrentMode == FormViewMode.Insert)
{
DropDownListANO.Text = "2009";
}
//Verifica controle de acesso
string _connectionString = WebConfigurationManager.ConnectionStrings["CONNECTIONSTRING"].ConnectionString;
string _strSQL = "SELECT * FROM AD_CONTROLEA WHERE USUARIO = @Usuario ORDER BY DETALHE_D_CC DESC";
SqlConnection con = new SqlConnection(_connectionString);
SqlCommand cmd = new SqlCommand(_strSQL, con);
cmd.Parameters.AddWithValue("@Usuario", UserNameTextBox.Text);
cmd.CommandType = CommandType.Text;
using (con)
{
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
//Se existe na tabela habilita FormView e GridView
FormView1.Enabled = true;
GridView1.Enabled = true;
//Upload FormView
string _DetalheUpload = (string)dr["DETALHE_UPLOAD"];
if (_DetalheUpload == "Sim")
{
FormView1.Enabled = true;
GridView1.Columns[6].Visible = true;
}
else
{
FormView1.Enabled = false;
GridView1.Columns[6].Visible = false;
}
//Download GridView
string _DetalheDownload = (string)dr["DETALHE_D_CC"];
if (_DetalheDownload == "Todos")
{
GridView1.DataSourceID = "SqlDataSourceTodos";
}
else
{
GridView1.DataSourceID = "SqlDataSource1";
}
}
else
{
//Se não existe na tabela desabilita FormView e GridView
FormView1.Enabled = false;
GridView1.Enabled = false;
GridView1.DataSourceID = "SqlDataSource1";
}
}
}
protected void FormView1_ItemInserting(Object sender, FormViewInsertEventArgs e)
{
Label lbResultado = (Label)FormView1.FindControl("lbResultado");
FileUpload FileUpload1 = (FileUpload)FormView1.FindControl("FileUpload1");
TextBox LINK_RG = (TextBox)FormView1.FindControl("LINK_RG");
if (FileUpload1.PostedFile.ContentLength > 0)
{
try
{
string destino = MapPath("~/Web/Administracao/Upload/RelatorioG/");
string fn = Path.GetFileName(FileUpload1.PostedFile.FileName);
FileUpload1.PostedFile.SaveAs(destino + fn);
lbResultado.Text = "Arquivo enviado com sucesso!";
e.Values["LINK_RG"] = "~/Web/Administracao/Upload/RelatorioG/" + fn.ToString();
//---
}
catch (Exception ex)
{
lbResultado.Text = ex.Message;
}
}
}
}
Toda vez que o usuario executar o protected void FormView1_DataBound(object sender, EventArgs e)
A variavel VARANO vai receber os dados do DropDownListANO.Text quando disparar o evento protected void FormView1_ItemInserting
e depois vai recuperar esses dados:
DropDownListANO.Text = VARANO nessa caso no evento protected void FormView1_DataBound
Fico no aguardo obrigado. - Coloquei minha variável pq vc coloca o nome que quiser para salvar na viewState.
Faça assim
1-Em cima do pageLoad coloque essa propriedade
public string Varano
{
get
{
if (ViewState["Varano"] == null)
return "";
else
return ViewState["Varano"].ToString();
}
set
{
ViewState.Add("Varano", value);
}
}
2-Deixe o databound for formview assim
if (FormView1.CurrentMode == FormViewMode.Insert)
{
MembershipUser user = Membership.GetUser();
TextBox UserNameTextBox = (TextBox)FormView1.FindControl("UserNameTextBox");
TextBox DateTextBox = (TextBox)FormView1.FindControl("DateTextBox");
DropDownList DropDownListANO = (DropDownList)FormView1.FindControl("DropDownListANO");
if (User.Identity.IsAuthenticated == true)
{
UserNameTextBox.Text = user.UserName;
UserNameTextBox2.Text = user.UserName;
}
DateTextBox.Text = DateTime.Now.ToString();
SqlDataSource1.DataBind();
GridView1.DataBind();
//----
DropDownListANO.Text = Varano;
//Verifica controle de acesso
string _connectionString = WebConfigurationManager.ConnectionStrings["CONNECTIONSTRING"].ConnectionString;
string _strSQL = "SELECT * FROM AD_CONTROLEA WHERE USUARIO = @Usuario ORDER BY DETALHE_D_CC DESC";
SqlConnection con = new SqlConnection(_connectionString);
SqlCommand cmd = new SqlCommand(_strSQL, con);
cmd.Parameters.AddWithValue("@Usuario", UserNameTextBox.Text);
cmd.CommandType = CommandType.Text;
using (con)
{
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
//Se existe na tabela habilita FormView e GridView
FormView1.Enabled = true;
GridView1.Enabled = true;
//Upload FormView
string _DetalheUpload = (string)dr["DETALHE_UPLOAD"];
if (_DetalheUpload == "Sim")
{
FormView1.Enabled = true;
GridView1.Columns[6].Visible = true;
}
else
{
FormView1.Enabled = false;
GridView1.Columns[6].Visible = false;
}
//Download GridView
string _DetalheDownload = (string)dr["DETALHE_D_CC"];
if (_DetalheDownload == "Todos")
{
GridView1.DataSourceID = "SqlDataSourceTodos";
}
else
{
GridView1.DataSourceID = "SqlDataSource1";
}
}
else
{
//Se não existe na tabela desabilita FormView e GridView
FormView1.Enabled = false;
GridView1.Enabled = false;
GridView1.DataSourceID = "SqlDataSource1";
}
}
}
3- No Inserting deixe assim
protected void FormView1_ItemInserting(Object sender, FormViewInsertEventArgs e)
{
Label lbResultado = (Label)FormView1.FindControl("lbResultado");
FileUpload FileUpload1 = (FileUpload)FormView1.FindControl("FileUpload1");
TextBox LINK_RG = (TextBox)FormView1.FindControl("LINK_RG");
DropDownList DropDownListANO = (DropDownList)FormView1.FindControl("DropDownListANO");
Varano = DropDownListANO.Text;
if (FileUpload1.PostedFile.ContentLength > 0)
{
try
{
string destino = MapPath("~/Web/Administracao/Upload/RelatorioG/");
string fn = Path.GetFileName(FileUpload1.PostedFile.FileName);
FileUpload1.PostedFile.SaveAs(destino + fn);
lbResultado.Text = "Arquivo enviado com sucesso!";
e.Values["LINK_RG"] = "~/Web/Administracao/Upload/RelatorioG/" + fn.ToString();
//---
}
catch (Exception ex)
{
lbResultado.Text = ex.Message;
}
}
}
}- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 12:53
- VALEU SEILOR DEU CERTO..
MAS EU GOSTRIA DE ENTENDER O CODIGO ABAIXO:
public string Varano
{
get
{
if (ViewState["Varano"] == null)
return "";
else
return ViewState["Varano"].ToString();
}
set
{
ViewState.Add("Varano", value);
}
}
PQ NÃO APENAS DECLARAR A VARIAVEL, PQ TENHO QUE TRATAR DESSA FORMA ACIMA ?

