As I know you can not use Triggers or Computed fields for AssetExtID but you can update AssetExtId periodically :
with a
as
(
SELECT [AssetId]
,[ProjectID]
, SUBSTRing(CAST(100000 + ROW_NUMBER() over (partition by projectid order by assetid) as varchar(max)), 2 , 5) rn
FROM [Test].[dbo].[tblAsset]
), b as
(
select a.* , p.projectcode from a inner join tblprojects p on a.projectid = p.projectid
)
,c as
(select * , projectcode +'-' + rn as a2 from b
)
update tblasset
set assetextid = a2
from tblasset inner join c on tblasset.assetid = c.assetid
This will work fine until you delete some previously inserted asset from your table.
Consider this case : you have 5 assets in project A then remove the 3rd one and then add a new one. At this point you have 2 assets that have the 5th position in this project assets, and of course they have the same ID of A-00005 !
So if you remove assets after insertion try to have another scheme for generation of your custom fields.
Hope it helps.