Como adaptar um DropDownList no lugar do TextBox para inserir um Valor - Ref. a aula IX

29/04/2009

A/C Fabio Galante Mans       Estou acompanhando fielmente o seu curso, grande CORINTHIANO,  e consegui adaptar a classe category.cs como já havia tirado duvida em tópico passado para Visualizar uma determinada subcategoria dentro de uma categoria como é mostrado abaixo nas store procedures e classe category.cs      Procedure dev_CategoryInsert Adaptada para adicionar uma Categoria ou Grupo á uma subCategoria ou Title ALTER PROCEDURE [dbo].[dev_CategoryInsert] ( @Grupo NVarchar(150), @Title NVarchar(150) ) AS INSERT dev_Categories ( Grupo, Title ) VALUES ( @Grupo, @Title ) Como ficou a SP CategorySelect Adptada para aceitar o campo Grupo tb ALTER PROCEDURE [dbo].[dev_CategorySelect] ( @Id Int ) AS SELECT CategoryId, Grupo, Title FROM dev_Categories WHERE CategoryId = @Id E a procedure Select All Category (tb adaptada para consultar o grupo ao qual pertence os Titles (ou subcategorias) ALTER PROCEDURE [dbo].[dev_SelectAllCategory] ( @Grupo VarChar(150) ) AS SELECT CategoryID, Title FROM dbo.dev_Categories Where Grupo = @Grupo ORDER BY Title SET NOCOUNT ON RETURN Os demais SP continuam a mesma coisa pois por enquanto não necessitaram de alterações   Agora a classe Category.cs adaptada para este fim veja como ficou Fabio   using System; using System.Data; using System.Configuration; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient; using System.Web.Configuration; namespace DevMedia.ECommerce { /// <summary> /// Representa a Categoria de um Produto ou Serviço /// e contem métodos para trabalhar com a Categoria /// </summary> [System.ComponentModel.DataObject] public class Category { private static readonly string _connectionString; private int _id; //private string _grupo; private string _title; public int CategoryID { get { return _id; } set { _id = value; } } //public string Grupo ///{ //get { return _grupo; } //set { _grupo = value; } /// } public string Title { get { return _title; } set { _title = value; } } static Category() { _connectionString = WebConfigurationManager.ConnectionStrings["StoreString"].ConnectionString; } public Category(SqlDataReader reader) { _id = (int)reader["CategoryID"]; //_grupo = (string)reader["Grupo"]; _title = (string)reader["Title"]; } /// <summary> /// Seleciona Todas as Categorias do Banco de Dados /// </summary> /// <returns></returns> [System.ComponentModel.DataObjectMethod(System.ComponentModel.DataObjectMethodType.Select,true)] public static List<Category> SelectCategory() { string Grupo = HttpContext.Current.Request.QueryString["sessao"];//sessao é um parametro vindo de um sitemap com menu por exemplo produtos -> categorias e outro menu serviços -> categorias (onde grupo seria produtos ou serviços e as categorias seriam listadas mediante o grupo solicitado(consegui fz essa adaptação e funcionou corretamente sem erros) //Inicializar Comando SqlConnection con = new SqlConnection(_connectionString); SqlCommand cmd = new SqlCommand("dev_SelectAllCategory", con); cmd.CommandType = CommandType.StoredProcedure; //Initialize parameters cmd.Parameters.AddWithValue("@Grupo", Grupo); List<Category> results = new List<Category>(); using (con) { con.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { results.Add(new Category(reader)); } con.Close(); return results; } } /// <summary> /// Seleciona Todas as Categorias do Banco de Dados /// Baseado na SubSessao em Servios /// </summary> /// <returns></returns> [System.ComponentModel.DataObjectMethod(System.ComponentModel.DataObjectMethodType.Select, false)] public static List<Category> Services() { string Grupo = HttpContext.Current.Request.QueryString["subsessao"]; //Inicializar Comando SqlConnection con = new SqlConnection(_connectionString); SqlCommand cmd = new SqlCommand("dev_SelectAllCategory", con); cmd.CommandType = CommandType.StoredProcedure; //Initialize parameters cmd.Parameters.AddWithValue("@Grupo", Grupo); List<Category> results = new List<Category>(); using (con) { con.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { results.Add(new Category(reader)); } con.Close(); return results; } } /// <summary> /// Seleciona uma Categoria por Category ID /// </summary> /// <param name="CategoryID"></param> /// <returns></returns> [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, false)] public static Category SelecById(int CategoryID) { //Inicializar o Command SqlConnection con = new SqlConnection(_connectionString); SqlCommand cmd = new SqlCommand("dev_CategorySelect", con); cmd.CommandType = CommandType.StoredProcedure; //Inicializar Parameters p/ Evitar SqlInjection cmd.Parameters.AddWithValue("@Id", CategoryID); //Criar Variavel para Retorno de Resultados Category result = null; using (con) { con.Open(); SqlDataReader reader = cmd.ExecuteReader(); if (reader.Read()) result = new Category(reader); } con.Close(); return result; }//<summary> //Create a new category //</summary> //<param name="parentId"></param> [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Insert, true)] public static void Insert(string grupo, string title) { //Initialize command SqlConnection con = new SqlConnection(_connectionString); SqlCommand cmd = new SqlCommand("dev_CategoryInsert ", con); cmd.CommandType = CommandType.StoredProcedure; //Initialize parameters cmd.Parameters.AddWithValue("@Grupo", grupo); cmd.Parameters.AddWithValue("@Title", title); using (con) { con.Open(); cmd.ExecuteNonQuery(); } con.Close(); } /// <summary> /// Update numa CategoryID Existente /// </summary> /// <param name="CategoryId"></param> /// <param name="Title"></param> [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Update, true)] public static void Update(int CategoryId, string Title) { //Inicializar o Command SqlConnection con = new SqlConnection(_connectionString); SqlCommand cmd = new SqlCommand("dev_CategoryUpdate", con); cmd.CommandType = CommandType.StoredProcedure; //Inicializar Parameters p/ Evitar SqlInjection cmd.Parameters.AddWithValue("@Id", CategoryId); cmd.Parameters.AddWithValue("@Title", Title); using (con) { con.Open(); cmd.ExecuteNonQuery(); } con.Close(); } /// <summary> /// Delete a category /// </summary> [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Delete, true)] public static void DeleteCat(int CategoryId) { // Initialize command SqlConnection con = new SqlConnection(_connectionString); SqlCommand cmd = new SqlCommand("dev_CategoryDelete", con); cmd.CommandType = CommandType.StoredProcedure; // Initialize parameters cmd.Parameters.AddWithValue("@CategoryId", CategoryId); using (con) { con.Open(); cmd.ExecuteNonQuery(); } } } } Á duvida seria na hora da inserção no formview no lugar de colocar Grupo como TextBox abaixo como seria o mesmo source abaixo com ele sendo um DropDownList com valores (Produtos e Serviços) por exemplo.esta é a minha duvida desta lição por enquanto <asp:FormView ID="frmAdd" runat="server" DefaultMode="Insert" DataSourceID="dsCategory" oniteminserted="frmAdd_ItemInserted"> <InsertItemTemplate> Grupo: <asp:TextBox ID="txtGrupo" runat="server" Text='<%# Bind("Grupo") %>' /> //Como aqui seria no caso se fosse usado um DropDownList com valores (Produtos e Serviços) para serem inseridos no Bind("Grupo")? <br /> Title: <asp:TextBox ID="txtTitle" runat="server" Text='<%# Bind("Title") %>' /> <br /> <asp:RequiredFieldValidator ID="reqTitle" runat="server" ControlToValidate="txtTitle" ErrorMessage="(Requerido)"></asp:RequiredFieldValidator> <br /> <br /> <asp:Button ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" /> &nbsp;<asp:Button ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" /> </InsertItemTemplate> </asp:FormView>   Fico no aguardo e desde já agradeço
Luiz Franco

Luiz Franco

Curtidas 0

Respostas

Fabio Mans

Fabio Mans

29/04/2009

Luiz não sei se você já chegou na aula que mostra a página de administração de produtos, neste página é carregado um Drop com as categorias, o que você tem que fazer é a mesma coisa.

Você precisa criar uma método para carregar os dados que precisar, e preencher o Drop. Em seguida definir um DataSource para o drop.

DataSourceID="sqlDsCategory"


<asp:FormView ID="frmAdd" DefaultMode="Insert" DataSourceID="srcProducts" runat="server"
        OnItemInserted="frmAdd_ItemInserted" OnItemCommand="frmAdd_ItemCommand">
       
       
        <InsertItemTemplate>
       
            <asp:Label ID="lblName" Text="Name:"  runat="server" AssociatedControlID="txtName" />
           
            <asp:RequiredFieldValidator ID="reqName" ControlToValidate="txtName" Text="(Required)"
                ValidationGroup="Add" runat="server" />
               
            <div class="instructions">
                Enter the name of the product.
            </div>
           
            <asp:TextBox ID="txtName" Text='<%# Bind("Title") %>' runat="server" />&nbsp;<br />
            <br />
       
           
           
                <asp:Label ID="lblCategory" Text="Category:" runat="server" AssociatedControlID="drpCategory" />
                                    <asp:RequiredFieldValidator ID="reqCategory" runat="server" ControlToValidate="drpCategory"
                        ErrorMessage="(Requerid)" InitialValue="Choose a category" ValidationGroup="Add" />
               
               
                <div class="instructions">
                    Select a product category.<br />
                    <asp:DropDownList ID="drpCategory" runat="server" DataSourceID="sqlDsCategory"
                        DataTextField="Title" DataValueField="CategoryID" SelectedValue='<%# Bind("CategoryID") %>' AppendDataBoundItems="True">
                        <asp:ListItem Selected="True">Choose a category</asp:ListItem>
                    </asp:DropDownList><br />

                    <asp:SqlDataSource ID="sqlDsCategory" runat="server" ConnectionString="<%$ ConnectionStrings:StoreString %>"
                        SelectCommand="SELECT [CategoryID], [Title] FROM [dev_Categories] ORDER BY [Title]">
                    </asp:SqlDataSource>
                  </div>
          
           <br />
                <asp:Label ID="lblPrice" Text="Price:" runat="server" AssociatedControlID="txtPrice" />
                <asp:RequiredFieldValidator ID="reqPrice" ControlToValidate="txtPrice" Text="(Required)"
                    Display="Dynamic" ValidationGroup="Add" runat="server" />
                <asp:CompareValidator ID="valPrice" ControlToValidate="txtPrice" Text="(Currency)"
                    Operator="DataTypeCheck" Type="Currency" ValidationGroup="Add" Display="Dynamic"
                    runat="server" />
                <div class="instructions">
                    Enter the product price.
                </div>
                <asp:TextBox ID="txtPrice" Columns="5" Text='<%# Bind("Price") %>' runat="server"  />
         
            <br style="clear: both" />
            <br />
            <asp:Label ID="lblDescription" Text="Brief Description (can include HTML):" AssociatedControlID="txtDescription"
                runat="server" />
            <asp:RequiredFieldValidator ID="reqDescription" ControlToValidate="txtDescription"
                Text="(Required)" ValidationGroup="Add" runat="server" />
            <div class="instructions">
                The brief description appears in the Products.aspx page and in advertisements.
            </div>
            <asp:TextBox ID="txtDescription" Text='<%#Bind("Description")%>' TextMode="multiLine"
                Columns="40" Rows="2" runat="server" />&nbsp;<br />
            <br />
            <br />
            <asp:Label ID="lblImage" Text="Image:" AssociatedControlID="upImage" runat="server" />
            <asp:RequiredFieldValidator ID="reqImage" runat="server" ControlToValidate="upImage"
                ValidationGroup="Add">(Required)</asp:RequiredFieldValidator><div class="instructions">
                (Optional)Upload a product image from your hard drive.
            </div>
            <asp:FileUpload ID="upImage" runat="server" FileName='<%# Bind("ImageURL") %>' />&nbsp;<br />
            <div>
            </div>
            <br />
            <asp:Button ID="btnAdd" Text="Add Product" CommandName="Insert" ValidationGroup="Add"
                runat="server" />
            <asp:Button ID="btnCancel" Text="Cancel" CausesValidation="false" CommandName="Cancel"
                runat="server" />
          
               
        </InsertItemTemplate>
       
       
    </asp:FormView>

Fabio
  
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Não não cheguei na aula que carrega as categorias para o Drop, qual é o numero da aula que vc fala sobre isso, agora por exemplo se fosse criar um método ou aproveitar alguma classe do Category.cs que carrega a lista de categorias seria  algo assim por exemplo   <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="dsCategory" DataTextField="Title" DataValueField="CategoryID"> </asp:DropDownList> <asp:ObjectDataSource ID="dsCategory" runat="server" OldValuesParameterFormatString="original_" SelectMethod="SelectCategory" TypeName="DevMedia.ECommerce.Category"></asp:ObjectDataSource> Que eu teria que embutir no codigo   Então eu teria que criar um novo DSource para isto   e nesse DataSource fazer ele enxergar esse metodo da classe Category.cs na guia Select ao configurar o DataSource no ObjectDataSource   /// <summary> /// Seleciona Todas as Categorias do Banco de Dados /// </summary> /// <returns></returns> [System.ComponentModel.DataObjectMethod(System.ComponentModel.DataObjectMethodType.Select,true)] public static List<Category> SelectCategory() { string Grupo = HttpContext.Current.Request.QueryString["sessao"]; //Inicializar Comando SqlConnection con = new SqlConnection(_connectionString); SqlCommand cmd = new SqlCommand("dev_SelectAllCategory", con); cmd.CommandType = CommandType.StoredProcedure; //Initialize parameters cmd.Parameters.AddWithValue("@Grupo", Grupo); List<Category> results = new List<Category>(); using (con) { con.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { results.Add(new Category(reader)); } con.Close(); return results; } }   Neste caso como eu tinha adaptado este método para sêr selecionado mediante as Categorias - Serviços ou Produtos mediante Request.QueryString do menu SiteMap eu teria que criar um outro método parecido nas classes somente para listar os Serviços e Produtos Vou passar para vc aqui como esta a minha estrutura atual de dados + procedure para vc entender o que eu to dizendo   CategoryID-Grupo-  Title 1 Produtos Componentes 2 Produtos Sites Prontos 3 Produtos Templates 4 Hospedagem Hospedagem Windows 5 Hospedagem Hospedagem Streaming 6 Produtos Web Controls NULL NULL NULL   Como está a minha SProcedure dev_SelectAllCategory agora   ALTER PROCEDURE [dbo].[dev_SelectAllCategory] ( @Grupo VarChar(150) ) AS SELECT CategoryID, Title FROM dbo.dev_Categories Where Grupo = @Grupo ORDER BY Title SET NOCOUNT ON RETURN Ou seja no caso para fazer o que eu quero e o que vc me disse seria então   A)Criar uma procedure parecida com ácima, mas no lugar de mostrar Select CategoryID, Title , mostrar um Select CategoryID, Grupo não usando Where Grupo = @Grupo e order by Grupo (ou ainda no caso utilizar o Select Order By Grupo Group By Grupo   B)Criar um método parecido com     [System.ComponentModel.DataObjectMethod(System.ComponentModel.DataObjectMethodType.Select,true)] public static List<Category> SelectCategory() na classe Category.cs para ele enxergar esta nova SP citada na lógica A por exemplo o método poderia sêr Chamado de public static List<Category> SelectCategoryGrupo()  e o Select dele em (System.ComponentModel.DataObjectMethodType.Select,false)]   definido como false   C)Por fim da mesma forma que foi feito na inserção do mesmo na aula que vc fala e da exemplo de colocar o objetDataSource para categorias na lista do dropdownlist, criar um objet data source a mais nesta area admin para verificar a qual grupo esta categoria irá pertencer, ou ainda já que ele é definido para produtos -> categorias (já definir um hidden ou caixa de texto desabilitada mas com o valor Produtos dentro dele)Isso não tinha lembrado lembrei agora já que o meu site map administrativo tá ássim   Manager > Produtos > Categorias (não necessitaria de uma decisão dropdownlist, pois já pertence á Produtos)     e outro   Manager > Serviços > Categorias (não necessitaria de uma decisão dropdownlist, pois já pertence á Serviços)   è bom refletir acho que tv mais facil do que eu pensava   Mas mesmo assim gostaria que fosse dado um ok sobre se as minhas lógicas acima, caso eu precise se seria isso á sêr feito num caso destes   Fico no aguardo e desde já agradeço
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

E aproveitando caso no lugar do DropDownList eu quiser usar mesmo o Controle TextBox ou o Controle Hidden da tab standard, como eu já deixaria ou no objeto hidden ou no objeto textbox o valor por exemplo "Produtos" já setado e pronto para sêr gravado sem que eu tivesse a necessidade de escrevê-lo na pagina fico no aguardo e desde já agradeço
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Olá eu utilizo bastante o Hidden, é bem simples.

hdfValor.Value = "seuvalor"

Assim você recupera no momento certo, era esta a dúvida? Acho que não é muito simples.

GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Olá Fabio Galante mas no caso aí como eu faço para mudar esta linha     <asp:TextBox ID="txtGrupo" runat="server" Text='<%# Bind("Grupo") %>' ontextchanged="txtGrupo_TextChanged" />   para o HiddenField já com o valor ex:Produtos para sêr reconhecido na adição ou  na inserção do mesmo valor em <%# Bind("Grupo") %>   Fico no aguardo e desde já agradeço
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Recupera o valor através do Hidden no TextChange, tira o bind.
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Teria um exemplo de como eu fazer isso no source e no codigo ou seja como o HIDDEN ficaria no source e como o Bind receberia o dado na base de dados
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Você já utilizou o Hidden? É bom simples

string valor = hdfID.Value;

Só isso.


GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Olá Fabio Galante não sei pq mas baseado no source abaixo não sei se estou fazendo corretamente     <custom:WebWindow ID="winAdd" runat="server" Hide="true" ShowCloseButton="False" Style="left: 23px; top: 459px" WindowTitleText="Adicionar Categoria"> <asp:FormView ID="frmAdd" runat="server" DefaultMode="Insert" DataSourceID="dsCategory" oniteminserted="frmAdd_ItemInserted"> <InsertItemTemplate> Grupo: <asp:TextBox ID="txtGrupo" runat="server" Text='<%# Bind("Grupo") %>' ontextchanged="txtGrupo_TextChanged" /> <asp:HiddenField ID="hdfID" runat="server" Value="Produtos" /> <br /> Title: <asp:TextBox ID="txtTitle" runat="server" Text='<%# Bind("Title") %>' /> <br /> <asp:RequiredFieldValidator ID="reqTitle" runat="server" ControlToValidate="txtTitle" ValidationGroup="Add" ErrorMessage="(Requerido)"></asp:RequiredFieldValidator> <br /> <br /> <asp:Button ID="InsertButton" ValidationGroup="Add" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" /> &nbsp;<asp:Button ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" /> </InsertItemTemplate> </asp:FormView> </custom:WebWindow> e no evento textchange do texbox txtGrupo como abaixo não sei pq ele não reconhece os valores para o txtGrupo e para sêr gravado na base de dados e no caso como eu faria para retornar o valor do campo hiddenfield ou até do string valor que tb não está sendo reconhecido para o bind.value para que ele grava-se o dado valor = "Produtos" na base de dados do dsCategory abaixo o evento e o datasource   protected void txtGrupo_TextChanged(object sender, EventArgs e) { //string valor = "Produtos"; string valor = hdfID.Value; } datasource   <asp:ObjectDataSource ID="dsCategory" runat="server" DeleteMethod="DeleteCat" InsertMethod="Insert" SelectMethod="SelectCategory" TypeName="WebProdutos.ECommerce.Category"> <DeleteParameters> <asp:Parameter Name="CategoryId" Type="Int32" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="grupo" Type="String" /> <asp:Parameter Name="title" Type="String" /> </InsertParameters> </asp:ObjectDataSource> Aqui o code-behind completo   using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class Manager_Category_Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void frmEdit_ItemUpdated(object sender, FormViewUpdatedEventArgs e) { //Carrega aps Update no FormView //O GridView atualizado grdCategories.DataBind(); } protected void grdCategories_SelectedIndexChanged(object sender, EventArgs e) { winEdit.Hide = false; } protected void frmEdit_ItemCommand(object sender, FormViewCommandEventArgs e) { winEdit.Hide = true; } protected void frmAdd_ItemInserted(object sender, FormViewInsertedEventArgs e) { grdCategories.DataBind(); } protected void txtGrupo_TextChanged(object sender, EventArgs e) { //string valor = "Produtos"; string valor = hdfID.Value; } }   Fico no aguardo e desde já agradeço    
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Conseguiu resolver?
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Não ainda não consegui resolver   A minha duvida consiste em como utilizando o Hidden Fiel, colocando como valor "Produtos" como assim que eu o inserir tb faço no code-behind para que ele seja gravado na base de dados ou class como explicada em sua aula?   Ou seja como baseado já nas minhas duvidas anteriores deveria ficar o source.aspx da pagina admin de cadastro de categorias e o code-behind da mesma para sêr gravada em sua base com hidden field  o valor do Grupo = "Produtos"?     Fico no aguardo e desde já agradeço
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Desculpa mas não estou mais entendendo sua dúvida. Você consegue dar um print em uma tela do que precisa?
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Aqui está o PrintScreen da Tela       
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Aqui está o PrintScreen da Tela       
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Aqui está o PrintScreen da Tela       
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Me Desculpe mas não sei pq razão sem querer foi enviado tres vezes o Print Screen da Tela   Mas o que eu preciso saber é como no Lugar do Campo Grupos aparecer para na caixa de Texto eu colocar o valor Produtos para ele gravar no bind eu colocar o HIDDEN-Field já com o valor "Produtos" e para ele gravar na base de dados do campo grupo ou seja como do mesmo jeito do ex. do texbox   Fico no aguardo e desde já agradeço
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Sinceramente não entendi, você tem o TextBox Grupo, e quer que ele pegue o valor do hidden?
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

O que eu gostaria é que fosse ocultado o texbox Grupo e no lugar fosse usado o HiddenField com o valor já determinado como "Produtos" e gravado este dado no banco de dados, só que aí não sei o procedimento correto no source ou code behind em relação ao Bind, para que eu substituí-se o textbox Grupo pelo hidden-field e este grava-se o valor "Produtos" por exemplo  Se precisar tenho uma forma de comunicação melhor caso se interesse para nós interargirmos por Acesso Remoto com o uso do Logmein-free para eu ti demonstrar o que precisaria se se interessar no proximo post me passe um ok e eu ti passo o link do logmein-free    
GOSTEI 0
Devmedia

Devmedia

29/04/2009

Luiz,
não é aconselhavel definir outro meio de comunicação do que a nossa consultoria. Uma solução para q vc possa demonstrar claramente o que deseja é através de um video que vc mesmo pode gravar utilizando o camtasia, por exemplo. Temos um video explicativo na home da consultoria de como fazer isso.
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Ok irei então providenciar o video, caso até lá não tenha respondida minha duvida fico no aguardo e desde já agradeço
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Olá Fabio, fui vêr como abrir um Chamado com Video aqui no DevMedia, mas vi que só pode sêr feito com O CAMTASIA STUDIO 5.1 ou superior entrei nos dois sites para bx. o trial mas o valor dele após 30 dias é US$ 299,00 como pd observar nos links abaixo, o que torna inviavel a utilização do mesmo para uma boa parte de iniciantes e desenvolvedores que ainda não o tenham   http://superdownloads.uol.com.br/download/130/camtasia-studio/   http://store.techsmith.com/buy/camtasia   Esse software poderá ser utilizado sem limitações de funcionalidades durante 30 dias. Ao término desse período, para continuar a fazer uso do mesmo, este poderá ser adquirido através do site do desenvolvedor por US$299,00   e que já está na versão 6.0   Já o uso do Windows Media Encoder é free apesar do formato dele sêr wmv o que é reconhecido pelo Silverlight eu sugiro que adaptem para que as pessoas insiram o video no formato wmv recuperando a pagina em silverlight se não fica inviavel já que nem sei se todas as funcionalidades por exemplo exportação em flv está suportada nesta versão trial   infelizmente isso hoje tá me impossibilitando de enviar tal video   Fico no aguardo e desde já agradeço
GOSTEI 0
Devmedia

Devmedia

29/04/2009

Luiz,
vc pode usar qualquer programa que capture a tela. existem vários que são gratuitos, por exemplo: www.nchsoftware.com/capture/index.html
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Como me foi pedido estou respondendo o chamado com o video dividido em duas partes

[#VIDEO-120#]
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Não consegui abrir o vídeo.


Vamos tentar novamente.

Você tem dois textbox.


Grupo: ________________
Categoria:_____________

Aqui um botão <Enviar>

O que você quer fazer?
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Sem o Hidden Field Grupo:<# Eval(Bind)_>________ - Aqui eu tenho que digitar ou "Produtos" ou "Serviços" Title:<#Eval(Bind)>__________                                    <Enviar>   Com o Hidden Field   Hidden Field: <#Eval(Bind) > Value = "Produtos" (ou "Serviços"mas sempre fixo dependendo de que pagina eu estiver e invisivel ao usuário ele já assume o valor Produtos, eu apenas digito o title e ele já insere na categoria apropriada, só que ainda não entendi pelo meu source como eu o coloco para gravar no campo Grupo via Hidden-Field (enfim aonde eu coloco o valor "Produtos" e o <# Eval(Bind) >  no mesmo objeto pra ele assumir o valor "Produtos" teria como me mostrar como ficaria no source dentro do Form View como ficaria isso é isso que eu ainda não entendi, me desculpe   Fico  no aguardo e desde já agradeço
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Primeiro no seu select tem este valor Produtos?
Exemplo

SELECT GRUPO, NOMEDOGRUPO, IDPRODUTOS FROM TESTE

Caso sim, você pode até converter para Template e adicionar manualmente o nome dos campos.


Text = <%# Eval("GRUPO") %>
Text = <%# Eval("NOMEDOGRUPO") %>
MeuHidden.Value = <%# Eval("IDPRODUTOS ") %>

Quando for salvar recupere o ID que está no Hidden

Fabio





Sem o Hidden Field Grupo:<# Eval(Bind)_>________ - Aqui eu tenho que digitar ou "Produtos" ou "Serviços" Title:<#Eval(Bind)>__________                                    <Enviar>   Com o Hidden Field   Hidden Field: <#Eval(Bind) > Value = "Produtos" (ou "Serviços"mas sempre fixo dependendo de que pagina eu estiver e invisivel ao usuário ele já assume o valor Produtos, eu apenas digito o title e ele já insere na categoria apropriada, só que ainda não entendi pelo meu source como eu o coloco para gravar no campo Grupo via Hidden-Field (enfim aonde eu coloco o valor "Produtos" e o <# Eval(Bind) >  no mesmo objeto pra ele assumir o valor "Produtos" teria como me mostrar como ficaria no source dentro do Form View como ficaria isso é isso que eu ainda não entendi, me desculpe   Fico  no aguardo e desde já agradeço
GOSTEI 0
Devmedia

Devmedia

29/04/2009

Luiz,
a resposta dada pelo consultor resolveu sua dúvida? podemos encerrar o chamado?
GOSTEI 0
Devmedia

Devmedia

29/04/2009

Luiz,
por falta de retorno estamos mudando o status do seu chamado para concluído. caso tnha mais duvidas sobre o assunto aqui tratato, por favor, post aqi mesmo q o consultor voltará a lhe atender.
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

O que estou usando e que é chamado no source dsCategory, baseado na classe category.cs é esta parte da classe e a procedure dev_SelectAllCategory (para consulta) metodo usado na classe category.cs   [System.ComponentModel.DataObjectMethod(System.ComponentModel.DataObjectMethodType.Select,true)] public static List<Category> SelectCategory() { string Grupo = HttpContext.Current.Request.QueryString["sessao"]; //Inicializar Comando SqlConnection con = new SqlConnection(_connectionString); SqlCommand cmd = new SqlCommand("dev_SelectAllCategory", con); cmd.CommandType = CommandType.StoredProcedure; //Initialize parameters cmd.Parameters.AddWithValue("@Grupo", Grupo); List<Category> results = new List<Category>(); using (con) { con.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { results.Add(new Category(reader)); } con.Close(); return results; } } PROCEDURE dev_SelectAllCategory ALTER PROCEDURE [dbo].[dev_SelectAllCategory] ( @Grupo VarChar(150) ) AS SELECT CategoryID, Title FROM dbo.dev_Categories Where Grupo = @Grupo ORDER BY Title SET NOCOUNT ON RETURN     e           para o metodo Insert na mesma classe   [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Insert, true)] public static void Insert(string grupo, string title) { //Initialize command SqlConnection con = new SqlConnection(_connectionString); SqlCommand cmd = new SqlCommand("dev_CategoryInsert ", con); cmd.CommandType = CommandType.StoredProcedure; //Initialize parameters cmd.Parameters.AddWithValue("@Grupo", grupo); cmd.Parameters.AddWithValue("@Title", title); using (con) { con.Open(); cmd.ExecuteNonQuery(); } con.Close(); } procedure dev_CategoryInsert     ALTER PROCEDURE [dbo].[dev_CategoryInsert] ( @Grupo NVarchar(150), @Title NVarchar(150) ) AS INSERT dev_Categories ( Grupo, Title ) VALUES ( @Grupo, @Title )   Source.aspx   <%@ Page Title="" Language="C#" MasterPageFile="~/Home.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Gerenciamento_Categorias_Default" ViewStateEncryptionMode="Always" EnableViewStateMac="true" ValidateRequest="true" %> <%@ Import Namespace="DevMedia" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentCenter" Runat="Server">Categorias<div style="padding: 15px"> Use this page to manage product categories. You can add new product categories, delete categories and edit existing categories. </div> <div style="width: 700px"> <div style="float: left; margin-right: 10px; padding: 10px; border-left: solid 1px white; height: 410px;"><asp:GridView ID="grdCategories" runat="server" AutoGenerateColumns="False" DataSourceID="dsCategory" DataKeyNames="CategoryID" onselectedindexchanged="grdCategories_SelectedIndexChanged"> <Columns> <asp:TemplateField ControlStyle-BackColor="#91070A" FooterStyle-BackColor="#91070A" ItemStyle-BackColor="#91070A"> <HeaderTemplate> Ao </HeaderTemplate> <ItemTemplate> <asp:LinkButton ID="lnkEdit" runat="server" CommandName="Select">Editar</asp:LinkButton>&nbsp; <asp:Label ID="lblBarra" runat="server" ForeColor="White" Text=" / "></asp:Label> &nbsp;&nbsp;<asp:LinkButton ID="lnkDelete" runat="server" CommandName="Delete" onclientclick="return confirm('Voc tem Certeza que deseja excluir esta Categoria?')">Deletar</asp:LinkButton> </ItemTemplate> <ControlStyle BackColor="#91070A"></ControlStyle> <FooterStyle BackColor="#91070A"></FooterStyle> <ItemStyle BackColor="#91070A"></ItemStyle> </asp:TemplateField> <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> </Columns> </asp:GridView> <custom:WebWindow ID="winEdit" Hide="true" WindowTitleText="Editar Categoria" runat="server"> <asp:FormView ID="frmEdit" runat="server" DataSourceID="dsCategoryUpdate" DefaultMode="Edit" onitemupdated="frmEdit_ItemUpdated" onitemcommand="frmEdit_ItemCommand"> <EditItemTemplate> Title: <asp:TextBox ID="txtTitle" runat="server" Text='<%# Bind("Title") %>' ValidationGroup="Edit" /> <br /> <asp:RequiredFieldValidator ID="reqTitle" runat="server" ControlToValidate="txtTitle" ValidationGroup="Edit">(Requerido)</asp:RequiredFieldValidator> <br /> <br /> <asp:Button ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="Update" ValidationGroup="Edit" /> &nbsp;<asp:Button ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" ValidationGroup="Edit" /> </EditItemTemplate> </asp:FormView> </custom:WebWindow> <custom:OpenWebWindow ID="lnkAdd" runat="server" Text="Adicionar Categoria" WebWindowID="winAdd" ForeColor="#91070A" /> &nbsp;<br /> <custom:WebWindow ID="winAdd" runat="server" Hide="true" ShowCloseButton="False" Style="left: 23px; top: 459px" WindowTitleText="Adicionar Categoria"> <asp:FormView ID="frmAdd" runat="server" DefaultMode="Insert" DataSourceID="dsCategory" oniteminserted="frmAdd_ItemInserted"> <InsertItemTemplate> Grupo: <asp:TextBox ID="txtGrupo" runat="server" Text='<%# Bind("Grupo") %>' //É aqui que quero substituir pelo hidden com valor = produtos ontextchanged="txtGrupo_TextChanged" /> <asp:HiddenField ID="hdfID" runat="server" Value="Produtos" /> <br /> Title: <asp:TextBox ID="txtTitle" runat="server" Text='<%# Bind("Title") %>' /> <br /> <asp:RequiredFieldValidator ID="reqTitle" runat="server" ControlToValidate="txtTitle" ValidationGroup="Add" ErrorMessage="(Requerido)"></asp:RequiredFieldValidator> <br /> <br /> <asp:Button ID="InsertButton" ValidationGroup="Add" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" /> &nbsp;<asp:Button ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" /> </InsertItemTemplate> </asp:FormView> </custom:WebWindow> <asp:ObjectDataSource ID="dsCategory" runat="server" DeleteMethod="DeleteCat" InsertMethod="Insert" SelectMethod="SelectCategory" TypeName="Devmedia.ECommerce.Category"> <DeleteParameters> <asp:Parameter Name="CategoryId" Type="Int32" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="grupo" Type="String" /> <asp:Parameter Name="title" Type="String" /> </InsertParameters> </asp:ObjectDataSource> <br /> <asp:ObjectDataSource ID="dsCategoryUpdate" runat="server" SelectMethod="SelecById" TypeName="DevMedia.ECommerce.Category" UpdateMethod="Update"> <UpdateParameters> <asp:ControlParameter ControlID="grdCategories" Name="CategoryID" /> </UpdateParameters> <SelectParameters> <asp:ControlParameter ControlID="grdCategories" Name="CategoryID" PropertyName="SelectedValue" Type="Int32" /> </SelectParameters> </asp:ObjectDataSource> </div></div> </asp:Content> Fico no aguardo e desde já agradeço
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Será somente 1 categoria o retorno ou várias? Quando for 1 você retorna um objeto caso contrário uma lista e faz o bind.   Fabio
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Olá Fabio Galante     Bem vou tentar simplificar - para vc entender o que eu preciso, caso possa me fazer um video explicando  o que preciso para eu entender melhor talvez facilite   Tenho o seguinte source que está dentro de um form view

<asp:FormView ID="frmAdd" runat="server" DefaultMode="Insert" DataSourceID="dsCategory" oniteminserted="frmAdd_ItemInserted"> <InsertItemTemplate> Grupo: <asp:TextBox ID="txtGrupo" runat="server" Text='<%# Bind("Grupo") %>' ontextchanged="txtGrupo_TextChanged" /> <br /> Title: <asp:TextBox ID="txtTitle" runat="server" Text='<%# Bind("Title") %>' /> <br /> <asp:RequiredFieldValidator ID="reqTitle" runat="server" ControlToValidate="txtTitle" ValidationGroup="Add" ErrorMessage="(Requerido)"></asp:RequiredFieldValidator> <br /> <br /> <asp:Button ID="InsertButton" ValidationGroup="Add" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" /> &nbsp;<asp:Button ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" /> </InsertItemTemplate> </asp:FormView> Os dados do mesmo são gravados ou inseridos no seguint datasource

<asp:ObjectDataSource ID="dsCategory" runat="server" DeleteMethod="DeleteCat" InsertMethod="Insert" SelectMethod="SelectCategory" TypeName="MyApp.ECommerce.Category"> <DeleteParameters> <asp:Parameter Name="CategoryId" Type="Int32" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="grupo" Type="String" /> <asp:Parameter Name="title" Type="String" /> </InsertParameters> </asp:ObjectDataSource> O que eu quero saber é no form view do source como faço para no lugar de inserir um dado no textbox  do txtGrupo como abaixo, dentro de InsertItemTemplate

<asp:TextBox ID="txtGrupo" runat="server" Text='<%# Bind("Grupo") %>'
                        ontextchanged="txtGrupo_TextChanged" />

eu utilizar um HiddenField no lugar neste mesmo source e no mesmo template onde o valor á ser gravado por padrão na base de dados campo grupo, do campo Hidden (do source) no Bind("Grupo") já fosse "Produtos" por exemplo, a minha duvida é como substituir este com hiddem no lugar de txtGrupo ácima para obter o mesmo efeito do cadastro no datasource mas com valor atribuido já para "Produtos"

Fico no aguardo e desde já agradeço
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Você diz?

<asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Bind("Grupo") %>' />
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Olá Fabio Galante <asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Bind("Grupo") %>' />   sim seria isso mas como faço para o Value='<%# Bind("Grupo") %>' ácima para sêr reconhecida na base de dados, campo Grupo do DataSource, já como Produtos por exemplo, mas seguindo o raciocínio ácima   Fico no aguardo e desde já agradeço
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Mas você chegou a testar? Com o Bind ele recupera.

Fabio
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Não ainda não tive tempo de testar pois ainda estou com duvidas   por exemplo pelo que entendi para fz aquilo que eu quero no source do .aspx tenho que colocar essa linha para gravar no data source como aconteceria se fosse dropdown ou textbox correto?   <asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Bind("Grupo") %>' />   Agora no caso acima como o Bind, reconhecerá o valor "Produtos", no datasource, na hora que for dado o postback do botão de envio de dados do source da pagina do formview é esta a minha duvida ainda que persiste   se fosse possivel me fazer um video sobre isso caso a duvida continue persistindo talvez me facilita-se já que pelo video do curso utilizando o text box eu entendi mas não estou conseguindo entender utilizar o hiddem já com um valor setado para o datasource reconhecer usando hidden como acima se facilitar com video eu fico no aguardo e desde já agradeço
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Luiz por favor, teste tudo que te passei antes de eu fazer mais exemplos, não adianta eu ficar criando novas instruções se você não testou, veja realmente se com o que mostramos até agora resolve o seu problema.



Abraços
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Olá Fabio Galante - Bom dia   Fiz o teste como mostrado abaixo      <custom:WebWindow ID="winAdd" runat="server" Hide="true" ShowCloseButton="False" Style="left: 23px; top: 459px" WindowTitleText="Adicionar Categoria"> <asp:FormView ID="frmAdd" runat="server" DefaultMode="Insert" DataSourceID="dsCategory" oniteminserted="frmAdd_ItemInserted"> <InsertItemTemplate> <asp:HiddenField ID="hdfID" runat="server" Value='<%# Bind("Grupo") %>' /> <br /> Title: <asp:TextBox ID="txtTitle" runat="server" Text='<%# Bind("Title") %>' /> <br /> <asp:RequiredFieldValidator ID="reqTitle" runat="server" ControlToValidate="txtTitle" ValidationGroup="Add" ErrorMessage="(Requerido)"></asp:RequiredFieldValidator> <br /> <br /> <asp:Button ID="InsertButton" ValidationGroup="Add" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" /> &nbsp;<asp:Button ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" /> </InsertItemTemplate> </asp:FormView> </custom:WebWindow> <asp:ObjectDataSource ID="dsCategory" runat="server" DeleteMethod="DeleteCat" InsertMethod="Insert" SelectMethod="SelectCategory" TypeName="DevMedia.ECommerce.Category"> <DeleteParameters> <asp:Parameter Name="CategoryId" Type="Int32" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="grupo" Type="String" /> <asp:Parameter Name="title" Type="String" /> </InsertParameters> </asp:ObjectDataSource> Testei Só que a base de dados deu erro entendendo que ao campo grupo não foi dado nenhum valor ou seja o Dado "Produtos" no HiddenField ácima, é isto que ainda não entendi como eu faço utilizando da forma ácima para que seja inserido no campo grupo via hidden-field pelo Value='<%# Bind("Grupo") %>'  o dado "Produtos" no DataSource, conforme o source ácima, enfim o que estaria faltando no source ácima para que ele reconhece-se este dado?   Fico no aguardo e desde já agradeço
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Onde está a informação do Grupo? Ele vem de um drop por exemplo?

Está faltando definir este parâmetro.

Fabio
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Olá Fabio Galante       Não ela não vem do Drop ela teria que vir, caso vc possa me dar os 2 exemplos ela poderia vir de duas formas   A)Embutida na pagina (neste caso seria em algum lugar do codigo da pagina?Se for como seria este exemplo?)     B)Via QueryString como abaixo       Categorias/Default.aspx?sessao=Produtos&subsessao=Categorias&LogadoFirefox=Admin&nivel=FF2      (no caso como também seria baseado neste segundo exemplo?)   Fico no aguardo e desde já agradeço
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

A)Embutida na pagina (neste caso seria em algum lugar do codigo da pagina?Se for como seria este exemplo?)

Não pode ser ViewState se for a mesma página ou session?


B) Dentro de Parameters do ObjectDataSource você configura informando que será via QueryString.


Fabio


GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Olá Fabio Galante   A)Embutida na pagina (neste caso seria em algum lugar do codigo da pagina?Se for como seria este exemplo?)

Não pode ser ViewState se for a mesma página ou session?


B) Dentro de Parameters do ObjectDataSource você configura informando que será via QueryString.
  Relativo as respostas A e B do qual me passou teria como me passar um exemplo via source ou codigo relativo á cada item para eu saber como ficaria essa adaptação   Fico no aguardo e desde já agradeço
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Como utilizar Session?


  private void Button1_Click(object sender, System.EventArgs e)
  {
      Session["name"] = TextBox1.Text;
      Session["email"] = TextBox2.Text;
      Server.Transfer("anotherwebform.aspx");
  }

Para ViewState é paracido.



Query string no ObjectDataSource

<SelectParameters>
            <asp:QueryStringParameter DefaultValue="1" Name="ID" QueryStringField="id"
                Type="Int32" />
        </SelectParameters>

Luiz por favor, teste os exemplos.


GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Olá Fabio Galante   pelo que entendi...     Colocando esta linha no insert parameters do objeto data source não preciso usar o hiddenfield               <asp:QueryStringParameter DefaultValue="1" Name="ID" QueryStringField="id"
                Type="Int32" />

  tipo seria algo assim   <asp:FormView ID="frmAdd" runat="server" DefaultMode="Insert" DataSourceID="dsCategory" oniteminserted="frmAdd_ItemInserted"> <InsertItemTemplate> <asp:HiddenField ID="hdfID" runat="server" Value='<%# Bind("Grupo") %>' /> <br /> Title: <asp:TextBox ID="txtTitle" runat="server" Text='<%# Bind("Title") %>' /> <br /> <asp:RequiredFieldValidator ID="reqTitle" runat="server" ControlToValidate="txtTitle" ValidationGroup="Add" ErrorMessage="(Requerido)"></asp:RequiredFieldValidator> <br /> <br /> <asp:Button ID="InsertButton" ValidationGroup="Add" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" /> &nbsp;<asp:Button ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" /> </InsertItemTemplate> </asp:FormView> </custom:WebWindow> <asp:ObjectDataSource ID="dsCategory" runat="server" DeleteMethod="DeleteCat" InsertMethod="Insert" SelectMethod="SelectCategory" TypeName="DevMedia.ECommerce.Category"> <DeleteParameters> <asp:Parameter Name="CategoryId" Type="Int32" /> </DeleteParameters> <InsertParameters> <asp:QueryStringParameter DefaultValue="Produtos" Name="grupo" QueryStringField="grupo"
                Type="String" /> substituindo-se ao de baixo <asp:Parameter Name="grupo" Type="String" /> e não precisando do objeto o hiddenfield ácima <asp:HiddenField ID="hdfID" runat="server" Value='<%# Bind("Grupo") %>' /> que está denfro do formview frmAdd, retirando-o da pagina
<asp:Parameter Name="grupo" Type="String" /> <asp:Parameter Name="title" Type="String" /> </InsertParameters> </asp:ObjectDataSource> Fico no aguardo e desde já agradeço
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Sim é uma opção por QueryString, mas esta informação deve estar na QueryString.
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Tipo seria algo assim no http da pagina   http://localhost:1308/WebProdutos/manager/Categorias/Default.aspx?id=Produtos   e no source no insertparameters   <asp:QueryStringParameter DefaultValue="1" Name="ID" QueryStringField="id"
                Type="Int32" />   Ou apenas mudar o valor   <asp:QueryStringParameter DefaultValue="Produtos" Name="Grupo" QueryStringField="id"
                Type="String" />     já seria o suficiente
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Isso mesmo, deu certo?

GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Olá Fabio Galante   Fiz deste jeito baseado nos exemplos que vc me retornou e deu certo     <custom:OpenWebWindow ID="lnkAdd" runat="server" Text="Adicionar Categoria" WebWindowID="winAdd" ForeColor="#91070A" /> &nbsp;<br /> <custom:WebWindow ID="winAdd" runat="server" Hide="true" ShowCloseButton="False" Style="left: 23px; top: 459px" WindowTitleText="Adicionar Categoria"> <asp:FormView ID="frmAdd" runat="server" DefaultMode="Insert" DataSourceID="dsCategory" oniteminserted="frmAdd_ItemInserted"> <InsertItemTemplate> <br /> Title: <asp:TextBox ID="txtTitle" runat="server" Text='<%# Bind("Title") %>' /> <br /> <asp:RequiredFieldValidator ID="reqTitle" runat="server" ControlToValidate="txtTitle" ValidationGroup="Add" ErrorMessage="(Requerido)"></asp:RequiredFieldValidator> <br /> <br /> <asp:Button ID="InsertButton" ValidationGroup="Add" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" /> &nbsp;<asp:Button ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" /> </InsertItemTemplate> </asp:FormView> </custom:WebWindow> <asp:ObjectDataSource ID="dsCategory" runat="server" DeleteMethod="DeleteCat" InsertMethod="Insert" SelectMethod="SelectCategory" TypeName="DevMedia.ECommerce.Category"> <DeleteParameters> <asp:Parameter Name="CategoryId" Type="Int32" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="grupo" DefaultValue="Produtos" Type="String" /> <asp:Parameter Name="title" Type="String" /> </InsertParameters> </asp:ObjectDataSource> Agora no caso abaixo o QueryStringField também teria que ter o valor = Grupo e não id?     <asp:QueryStringParameter DefaultValue="Produtos" Name="Grupo" QueryStringField="id"
                Type="String" />     E aproveitando a deixa já que da forma ácima o mesmo já deu certo se fosse utilizado no Template de Edição ou Update seria o parameter usado da mesma forma que feito no insert ou seja   <asp:Parameter Name="grupo" DefaultValue="Produtos" Type="String" />   dentro do Template Edit e datasource dsCategoryUpdate abaixo ou somente seria necessário apenas no template do datasource de inserção como já resolvido ácima   <custom:WebWindow ID="winEdit" Hide="true" WindowTitleText="Editar Categoria" runat="server"> <asp:FormView ID="frmEdit" runat="server" DataSourceID="dsCategoryUpdate" DefaultMode="Edit" onitemupdated="frmEdit_ItemUpdated" onitemcommand="frmEdit_ItemCommand"> <EditItemTemplate> Title: <asp:TextBox ID="txtTitle" runat="server" Text='<%# Bind("Title") %>' ValidationGroup="Edit" /> <br /> <asp:RequiredFieldValidator ID="reqTitle" runat="server" ControlToValidate="txtTitle" ValidationGroup="Edit">(Requerido)</asp:RequiredFieldValidator> <br /> <br /> <asp:Button ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="Update" ValidationGroup="Edit" /> &nbsp;<asp:Button ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" ValidationGroup="Edit" /> </EditItemTemplate> </asp:FormView> </custom:WebWindow> Data source dsCategoryUpdate   <asp:ObjectDataSource ID="dsCategoryUpdate" runat="server" SelectMethod="SelecById" TypeName="DevMedia.ECommerce.Category" UpdateMethod="Update"> <UpdateParameters> <asp:ControlParameter ControlID="grdCategories" Name="CategoryID" /> </UpdateParameters> <SelectParameters> <asp:ControlParameter ControlID="grdCategories" Name="CategoryID" PropertyName="SelectedValue" Type="Int32" /> </SelectParameters> </asp:ObjectDataSource>Fico no aguardo e desde já agradeço
GOSTEI 0
Fabio Mans

Fabio Mans

29/04/2009

Quando você monta o DataSource via assistente ele mostra todas as opções para você, basta ir informando os parâmetros, perceba que ele tem uma caixa com todas as opções, sessão, querystring e outras. Isso para o CRUD.

Fabio
GOSTEI 0
Luiz Franco

Luiz Franco

29/04/2009

Ah ok vou rever as aulas qdo vc monta os object data source para visualizar isto, mas ainda bem que deu certo..pode fechar este post como concluido e qualquer outra nova duvida em relação á ele caso precise futuramente eu reabro ok   Obrigadão no próximo post eu ti passo o feedback como concluido
GOSTEI 0
POSTAR