Array
(
)

Método Delete para ObjDS recebe obj em branco

Atilafm
   - 19 out 2008

Estou construindo uma aplicação em camadas, onde utilizo um objeto (sol_compra_it_fcn) para acesso aos dados. Na apresentação utilizo um Listview acessando dados de um objectdatasource, que obtem os dados atraves da classe sol_compra_it_fcn.

Consegui montar quase toda classe, a leitura de dados, atualização e inserção estão funcionando corretamente.

Estou com problemas no método que apaga um registro. Como declarei no objDS DataObjectTypeName=´sol_compra_it´, o mesmo procura um método para deletar que receba um objeto sol_compra_it, declarei ele corretamente, inclusive o método e chamado, porém o objeto vem em branco....

Pesquisei, mais todos os exemplos que encontro, o método recebe apenas variaveis com a chave, em nenhum encontrei recebendo o objeto como meu caso...

O máximo que consegui encontrar foi: http://msdn.microsoft.com/en-us/library/ms227436.aspx:

Citação:
If the ConflictDetection property is set to the OverwriteChanges value, the object that is passed to the Delete method is populated with current primary key values only (the other properties of the object are null).


A dúvida então é: Como seriam determinados esses ´current primary key´ para o objeto ??? Tentei utilizar DataKeyNames=´nr_sol,seq´ no ListView mais não resolveu...

Segue o codigo das classes , o objDS e o listview...

grato

#Código

public class sol_compra_it
{
    private int _nr_sol;
    private int _seq;
    private int _cod_it;
    private string _it_descricao;
    private decimal _qtd;
    private DateTime? _dt_entrega;
    private int _status;

    public int nr_sol
    {
        get { return this._nr_sol; }
        set { this._nr_sol = value; }
    }

    public int seq
    {
        get { return this._seq; }
        set { this._seq = value; }
    }

    public int cod_it
    {
        get { return this._cod_it; }
        set { this._cod_it = value; }
    }

    public string it_descricao
    {
        get { return this._it_descricao; }
        set { this._it_descricao = value; }
    }

    public decimal qtd
    {
        get { return this._qtd; }
        set { this._qtd = value; }
    }

    public DateTime? dt_entrega
    {
        get { return this._dt_entrega; }
        set { this._dt_entrega = value; }
    }


}

public class sol_compra_it_fcn
{

    // Retorna uma lista de registros 
    public static List<sol_compra_it> Lst(int nr_sol)
    {

    }


    // Grava um registro (novo/atualização) 
    public static void Gravar(sol_compra_it obj)
    {

    }


    // Apaga um registro 
    public static void Apagar(sol_compra_it obj)
    {
// Aqui que pecisaria do obj.nr_sol e obj.seq porem vem tudo em branco 

!!!!!!!!
        Fcn.Alert(">> Apagar =>> sol:" + obj.nr_sol + " seq: " + obj.seq + " qtd: " + 

obj.qtd + " item:" + obj.cod_it);


    }


}





<asp:ObjectDataSource ID="ObjectDataSource2" runat="server" 
            DataObjectTypeName="sol_compra_it" SelectMethod="Lst" 
            TypeName="sol_compra_it_fcn" UpdateMethod="Gravar" 
    DeleteMethod="Apagar" InsertMethod="Gravar">
            <SelectParameters>
                <asp:ControlParameter ControlID="txt_nr_sol" DefaultValue="" 

Name="nr_sol" 
                    PropertyName="Text" Type="Int32" />
            </SelectParameters>
        </asp:ObjectDataSource>



<asp:ListView ID="ListView1" runat="server" DataSourceID="ObjectDataSource2" 
    InsertItemPosition="LastItem" style="font-size: xx-small" 
DataKeyNames="nr_sol,seq" >

    <LayoutTemplate>
        <table id="Table1" runat="server">
            <tr id="Tr1" runat="server">
                <td id="Td1" runat="server">
                    <table ID="itemPlaceholderContainer" runat="server" border="1" 
                        style="background-color: #FFFFFF;border-collapse: 

collapse;border-color: #999999;border-style:none;border-width:1px;font-family: 

Verdana, Arial, Helvetica, sans-serif;">
                        <tr id="Tr2" runat="server" 

style="background-color:DCDCDC;color: 000000;">
                            <th id="Th1" runat="server">
                            </th>
                            <th id="Th3" runat="server">
                                Seq.</th>
                            <th id="Th4" runat="server">
                                Código</th>
                            <th id="Th5" runat="server">
                                Descrição</th>
                            <th id="Th6" runat="server">
                                Quantidade</th>
                            <th id="Th7" runat="server">
                                Entrega</th>
    
                        </tr>
                        <tr ID="itemPlaceholder" runat="server">
                        </tr>
                    </table>
                </td>
            </tr>
            <tr id="Tr3" runat="server">
                <td id="Td2" runat="server" 
                    style="text-align: center;background-color: #CCCCCC;font-family: 

Verdana, Arial, Helvetica, sans-serif;color: 000000;">
                </td>
            </tr>
        </table>
        </LayoutTemplate>

        <ItemTemplate>
            <tr style="background-color:#DCDCDC;color: 000000;">
                <td>
                    <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" 

Text="Apagar" />
                    <asp:Button ID="EditButton" runat="server" CommandName="Edit" 

Text="Alterar" />
                </td>
                <td>

                    <asp:Label ID="Label11" runat="server" Text=´<¬ Bind("nr_sol") 

¬>´ />

                    <asp:Label ID="seqLabel" runat="server" Text=´<¬ Bind("seq") ¬>´ 

/>
                </td>
                <td>
                    <asp:Label ID="cod_itLabel" runat="server" Text=´<¬ 

Bind("cod_it") ¬>´ />
                </td>
                <td>
                    <asp:Label ID="it_descricaoLabel" runat="server" 
                        Text=´<¬# Bind("it_descricao") ¬>´ />
                </td>
                <td>
                    <asp:Label ID="qtdLabel" runat="server" Text=´<¬ Bind("qtd") ¬>´ 

/>
                </td>
                <td>
                    <asp:Label ID="dt_entregaLabel" runat="server" 
                        Text=´<¬ Bind("dt_entrega", "{0:dd/MM/yyyy}" ) ¬>´ />
                </td>
            </tr>
        </ItemTemplate>
    </asp:ListView>