compilei ( crtl+sthif+c)" e beleza uma dll foi gerada na pasta bin deste projeto
Criei agora um projeto ASP .NET WebApplication , sendo que este já vem com um arquivo aspx, que é a pagina que vou usar
Fui até o Solution Explorer na pasta References, cliquei com o botão direito e selecionei a opção Add Reference...
Abriu uma tela Chamada "Add Reference"
Na primeira aba chamada ".Net" cliquei no botão "Browse..." e selecionei a dll que foi criada no projeto WebControlLibrary, aquela que esta na pasta bin do projeto que descrevi acima
beleza, voltando a tela "Add Reference" já aparece na grid mais abaixo "Selected Components" o nome da dll, cliquei no botão Ok e ela já foi adicionada como referencia do projeto
depois fui na aba ToolBox" do Visual Studio na gui Web Forms" cliquei com o botão direito e no menu escolhi a opção Add/Remove Items..."
Surgiu uma tela "Customize ToolBox" e na aba ".Net Framework Components" cliquei no botão "Browser..." e selecionei a dll, da mesma forma que fiz para adicionar em Reference
Ai ela já é adicionada no grid acima, como o chekbox selecionado, cliquei em "OK" e tudo beleza, tenho mais um componente na minha toolbox
Cliquei nele e arrastei para a pagina aspx, em suas propriedades tem uma opção chamada "PopupMessage" que já vem como default a mensagem "Confima?"
Clicando em "F5" para executar a pagina o resultado foi o um botao que quando clicado exibe um "confirm" ( tipo o alert , mas com o botão de Ok e Cancelar) com a mensagem Confirma?"
O que faz aparecer esta propriedade "PopupMessage" no componente é este codigo, que fica no arquivo cs do componente
Pergunta
olimpia
Bom dia
Vamos ver se consigo descrever o meu problema
Estou usando Visual Studio 2003, criei um novo projeto WebControlLibrary em c#,
dentro do projeto e criado um arquivo com o nome de WebCustomControl1.cs
substitui todo o codigo por este aqui
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace ClientSideControls
{
/// <summary>
/// Summary description for ConfirmButton.
/// </summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:ConfirmaButton runat=server></{0}:ConfirmaButton>")]
public class ConfirmaButton : Button
{
[bindable(true),
Category("Appearance"),
DefaultValue("")]
public string PopupMessage
{
get
{
// See if the item exists in the ViewState
object popupMessage = this.ViewState["PopupMessage"];
if (popupMessage != null)
return this.ViewState["PopupMessage"].ToString();
else
return "Confirma?";
}
set
{
// Assign the ViewState variable
ViewState["PopupMessage"] = value;
}
}
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender(writer);
string script = @"return confirm(""%%POPUP_MESSAGE%%"");";
script = script.Replace("%%POPUP_MESSAGE%%",
this.PopupMessage.Replace("\"", "\\\""));
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, script);
}
}
}
compilei ( crtl+sthif+c)" e beleza uma dll foi gerada na pasta bin deste projeto
Criei agora um projeto ASP .NET WebApplication , sendo que este já vem com um arquivo aspx, que é a pagina que vou usar
Fui até o Solution Explorer na pasta References, cliquei com o botão direito e selecionei a opção Add Reference...
Abriu uma tela Chamada "Add Reference"
Na primeira aba chamada ".Net" cliquei no botão "Browse..." e selecionei a dll que foi criada no projeto WebControlLibrary, aquela que esta na pasta bin do projeto que descrevi acima
beleza, voltando a tela "Add Reference" já aparece na grid mais abaixo "Selected Components" o nome da dll, cliquei no botão Ok e ela já foi adicionada como referencia do projeto
depois fui na aba ToolBox" do Visual Studio na gui Web Forms" cliquei com o botão direito e no menu escolhi a opção Add/Remove Items..."
Surgiu uma tela "Customize ToolBox" e na aba ".Net Framework Components" cliquei no botão "Browser..." e selecionei a dll, da mesma forma que fiz para adicionar em Reference
Ai ela já é adicionada no grid acima, como o chekbox selecionado, cliquei em "OK" e tudo beleza, tenho mais um componente na minha toolbox
Cliquei nele e arrastei para a pagina aspx, em suas propriedades tem uma opção chamada "PopupMessage" que já vem como default a mensagem "Confima?"
Clicando em "F5" para executar a pagina o resultado foi o um botao que quando clicado exibe um "confirm" ( tipo o alert , mas com o botão de Ok e Cancelar) com a mensagem Confirma?"
O que faz aparecer esta propriedade "PopupMessage" no componente é este codigo, que fica no arquivo cs do componente
public string PopupMessage
{
get
{
// See if the item exists in the ViewState
object popupMessage = this.ViewState["PopupMessage];
if (popupMessage != null)
return this.ViewState["PopupMessage"].ToString();
else
return "Confirma?";
}
set
{
// Assign the ViewState variable
ViewState["PopupMessage"] = value;
}
}
pude perceber que o retorno é uma string, o que faz o conteudo desta string aparecer em um confirm quando o botão é clicado e este codigo aqui
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender(writer);
string script = @"return confirm(""%%POPUP_MESSAGE%%"");";
script = script.Replace("%%POPUP_MESSAGE%%",
this.PopupMessage.Replace("\"", "\\\""));
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, script);
}
}
}
Ai que vem o meu problema, ao invés de ter uma propriedade do Componente que receba uma string, preciso ter uma que receba um DataSet
tentei desta forma
public DataSet DataSource
{
get
{
object DataSource = this.ViewState["DataSource];
if (DataSource != null)
return this.ViewState["DataSource"];
else
return null;
}
set
{
ViewState["DataSource"] = value;
}
}
Ou seja, criei uma propriedade chamada DataSource que recebera um DataSet
Mas quando compilo a dll surge o seguinte erro
Cannot implicitly convert type 'object' to 'System.Data.DataSet'
Como posso fazer para resolver este erro?
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados