代码之家  ›  专栏  ›  技术社区  ›  Abe Miessler

无法从我的代码隐藏设置LinqDataSource InsertParameters

  •  0
  • Abe Miessler  · 技术社区  · 14 年前

    我有以下代码,看起来它应该设置insertParameter,但是每次插入都使用默认参数。我需要做什么特殊的事情来完成这项工作吗?

    代码隐藏:

    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";
            }
        }
    

    从我的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>
    
    1 回复  |  直到 14 年前
        1
  •  0
  •   Abe Miessler    14 年前

    找到了解决方案。请参见下面的更新函数:

    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";
            }
        }