2010-03-31 4 views
0

J'ai le code suivant qui semble devoir définir mon insertParameter mais chaque fois qu'un insert se produit, il utilise le paramètre par défaut. Ai-je besoin de faire quelque chose de spécial pour faire ce travail?Impossible de définir LinqDataSource InsertParameters à partir de mon code

Codebehind:

protected void SetInsertParams(object sender, LinqDataSourceInsertEventArgs e) 
    { 
     if (lbl_Personnel.Visible) 
     { 
      lds_Personnel.InsertParameters["BudgetLineTypeCode"].DefaultValue = "S"; 
     } 
     else if(lbl_Operating.Visible) 
     { 
      lds_Personnel.InsertParameters["BudgetLineTypeCode"].DefaultValue = "O"; 
     } 
     else if (lbl_SubContractor.Visible) 
     { 
      lds_Personnel.InsertParameters["BudgetLineTypeCode"].DefaultValue = "C"; 
     } 
    } 

De ma page ASPX:

 <asp:LinqDataSource ID="lds_Personnel" runat="server" OnSelecting="SetParams" 
      ContextTypeName="nrm.FRGPproposal.FrgpropDataContext" 
      TableName="BudgetLines" OnInserted="lds_Personnel_OnInserted" OnInserting="SetInsertParams" 
      Where="ProposalID == @PropNumber &amp;&amp; BudgetLineTypeCode == @BudgetLineTypeCode" 
      EnableDelete="True" EnableInsert="True" EnableUpdate="True"> 
      <WhereParameters> 
       <asp:SessionParameter Name="PropNumber" SessionField="PropNumber" Type="Int32" /> 
       <asp:Parameter DefaultValue="S" Name="BudgetLineTypeCode" Type="Char" /> 
      </WhereParameters> 
      <InsertParameters> 
       <asp:SessionParameter Name="ProposalID" SessionField="PropNumber" Type="Int32"/>  
       <asp:Parameter DefaultValue="S" Name="BudgetLineTypeCode" Type="Char" />   
      </InsertParameters> 
     </asp:LinqDataSource> 

Répondre

0

trouvé une solution. Voir la fonction mise à jour ci-dessous:

protected void SetInsertParams(object sender, LinqDataSourceInsertEventArgs e) 
    { 
     BudgetLine bl = (BudgetLine)e.NewObject; 
     if (lbl_Personnel.Visible) 
     { 
      bl.BudgetLineTypeCode = 'S'; 
      //lds_Personnel.InsertParameters["BudgetLineTypeCode"].DefaultValue = "S"; 
     } 
     else if(lbl_Operating.Visible) 
     { 
      bl.BudgetLineTypeCode = 'O'; 
      //lds_Personnel.InsertParameters["BudgetLineTypeCode"].DefaultValue = "O"; 
     } 
     else if (lbl_SubContractor.Visible) 
     { 
      bl.BudgetLineTypeCode = 'C'; 
      //lds_Personnel.InsertParameters["BudgetLineTypeCode"].DefaultValue = "C"; 
     } 
    } 
Questions connexes