Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Problema resolvido ....
codigo abaixo pra pegar a chave que vai ser deletada
protected void ObjectDataSourceFontesConhec_Deleting(object sender, ObjectDataSourceMethodEventArgs e)
{
lblErr.Text = "teste "+ e.InputParameters[0].ToString();
e.Cancel = true;
}Bom pessoal, imaginem a seguinte situação.
tabela 1 : campo1, campo2,campo3
tabela 2 : campo1, campo2, campo3(referente tabela 1)
a tabela 2 possui o campo 3 que é chave externa da tabela1, e em um gridview, detailsview, etc, quando adiciono o comando delete (que vem de um object data source), sem fazer nada na mão. Até ai tudo bem, ate quando eu tento deletar uma linha da tabela 1 e uma chave esta sendo usada na tabela 2 gerando erro. Gostaria de tratar este erro, avisando o usuario de uma forma mais amigavel( ex: Este registro nao pode ser excluido porque esta sendo utilizado em outra tabela...bla bla bla)
penso que a solucacao esta em fazer uma verificacao no evento "RowDeleting(object sender, GridViewDeleteEventArgs e)" do Grid ou Object data source, e caso a chave externa estiver sendo usada bastaria apenas fazer um e.Cancel=true. Gostaria de saber como pegar a chave primaria que vai ser deletada ( o parametro do comando delete) ?
Obs: eu não mostro o campo da chave primaria no grid (ele fica como visible=false)
Abaixo segue parte do Gridview onde esta o botao com o comando delete e o objectDataSource
<ItemTemplate>
<asp:Button ID="Button2" runat="server"
CausesValidation="False" CommandName="Delete" EnableViewState="False" OnClientClick="return confirm('Deseja Realmente Excluir?');"
Text="Excluir" />
</ItemTemplate>
<asp:ObjectDataSource ID="ObjectDataSourceDetailView" runat="server" DeleteMethod="Delete"
InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" SelectMethod="ListaMembroById_Cpf"
TypeName="DataSetCepxTableAdapters.tblXMembrosTableAdapter" UpdateMethod="Update">
<DeleteParameters>
<asp:Parameter Name="Original_nId" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="sTitulacao" Type="String" />
<asp:Parameter Name="sMatricula" Type="String" />
<asp:Parameter Name="sContato" Type="String" />
<asp:Parameter Name="sArea" Type="String" />
<asp:Parameter Name="Original_nId" Type="Int32" />
</UpdateParameters>
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="idMembro" PropertyName="SelectedValue"
Type="Int32" />
<asp:Parameter Name="CpfMembro" Type="String" />
</SelectParameters>
<InsertParameters>
<asp:Parameter Name="sTitulacao" Type="String" />
<asp:Parameter Name="sMatricula" Type="String" />
<asp:Parameter Name="sContato" Type="String" />
<asp:Parameter Name="sArea" Type="String" />
</InsertParameters>
</asp:ObjectDataSource>Carregando comentários...