Issue assigning a session variable to a sqldatasource

I have a sqldatasource that is running an update statement. The update statment calls a sproc that updates the table. I have a 'LastModifiedBy' column in the table. I set a session variable  (userid) to what I want to go into the this column in the page_load event to make sure it's being set. I setup the sqldatasource's parameters to use that session variable to send to the proc to populate the 'LastModifiedBy' column but it never gets sent. If I hardcode the variable in the proc, everything works fine.

Thoughts?
KBSLPDevAsked:
Who is Participating?
 
Computer101Connect With a Mentor Commented:
PAQed with points refunded (500)

Computer101
EE Admin
0
 
evilrixSenior Software Engineer (Avast)Commented:
Are you sure the session variable exists at the point you use it? Do you check it for null to be use? Posting your code might be useful.
0
 
KBSLPDevAuthor Commented:
Pretty sure. However, since it's done declaratively, it's difficult to troubleshoot. Attached is the code. There is more but I think it's irrelavent. There is a 3rd party grid (infragistics) that invokes the update method. I do know the update method is being invoked so it should be out of the grid's hands at that point.
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
        DeleteCommand="k_sp_Rules_D" DeleteCommandType="StoredProcedure" InsertCommand="k_sp_Rules_I"
        InsertCommandType="StoredProcedure" SelectCommand="k_sp_Rules_R" SelectCommandType="StoredProcedure"
        UpdateCommand="k_sp_Rules_U" UpdateCommandType="StoredProcedure" OnDeleted="SqlDataSource1_Deleted" OnUpdated="SqlDataSource1_Updated" OnUpdating="SqlDataSource1_Updating" OnInserted="SqlDataSource1_Inserted" OnInserting="SqlDataSource1_Inserting">
        <DeleteParameters>
            <asp:Parameter Name="product_rules_id" Type="Int32" />
            <asp:Parameter Name="original_product_rules_id" Type="Int32" />
        </DeleteParameters>
        <UpdateParameters>
            <asp:Parameter Direction="ReturnValue" Name="RETURN_VALUE" Type="Int32" />
            <asp:Parameter Name="product_rules_id" Type="Int32" />
            <asp:Parameter Name="original_product_rules_id" Type="Int32" />
            <asp:Parameter Name="supplier_im_id" Type="String" DefaultValue="" />
            <asp:Parameter Name="product_id" Type="String" />
            <asp:Parameter Name="company_id" Type="Int32" />
            <asp:Parameter Name="effective_date" Type="DateTime" />
            <asp:Parameter Name="base_cost" Type="Double" />
            <asp:Parameter Name="capability_support_cost" Type="Double" />
            <asp:Parameter Name="service_cost" Type="Double" />
            <asp:Parameter Name="cc_im" Type="String" />
            <asp:Parameter Name="cc_pct" Type="Double" />
            <asp:Parameter Name="qh_im" Type="String" />
            <asp:Parameter Name="qh_margin" Type="Double" />
            <asp:Parameter Name="qh_pct" Type="Double" />
            <asp:Parameter Name="active" Type="Boolean" />
            <asp:Parameter Name="unit_type" Type="String" />
            <asp:SessionParameter ConvertEmptyStringToNull="False" DefaultValue="" Name="LastModBy"
                SessionField="UserID" Size="15" Type="String" />
        </UpdateParameters>
        <InsertParameters>
            <asp:Parameter Name="supplier_im_id" Type="String" />
            <asp:Parameter Name="product_id" Type="String" />
            <asp:Parameter Name="company_id" Type="Int32" />
            <asp:Parameter Name="effective_date" Type="DateTime" />
            <asp:Parameter Name="base_cost" Type="Double" />
            <asp:Parameter Name="capability_support_cost" Type="Double" />
            <asp:Parameter Name="service_cost" Type="Double" />
            <asp:Parameter Name="cc_im" Type="String" />
            <asp:Parameter Name="cc_pct" Type="Double" />
            <asp:Parameter Name="qh_im" Type="String" />
            <asp:Parameter Name="qh_margin" Type="Double" />
            <asp:Parameter Name="qh_pct" Type="Double" />
            <asp:Parameter Name="active" Type="Boolean" />
            <asp:Parameter Name="unit_type" Type="String" />
            <asp:SessionParameter Name="LastModBy" SessionField="UserID" Type="String" />
        </InsertParameters>
        <SelectParameters>
            <asp:ControlParameter ControlID="txtDate" Name="dtEffectiveDate" PropertyName="Text"
                Type="DateTime" />
        </SelectParameters>
    </asp:SqlDataSource>
 
 
 
In code: 
    string pagename = "frmRule";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            try
            {
                //fill header, body and footer labels
                GetPageContent(pagename, lblHeader, lblBody, lblFooter);
                txtDate.Text = System.DateTime.Now.ToShortDateString();
                Session["UserID"] = "test userid";
                
            }
            catch (Exception exp)
            {
                HandleError(exp, pagename, lblResult);
            }
        }
}

Open in new window

0
 
KBSLPDevAuthor Commented:
Found that if I changed one of the parameter's value in the grid's UpdateRow method to be what I wanted rather than the Update parameter value definition of the sqldatasource, the problem was corrected.

    protected void UltraWebGrid1_UpdateRow(object sender, RowEventArgs e)
    {
        //set the last mod by to be the user id
        e.Row.Cells[15].Value = Session["UserID"].ToString();
    }

Thanks!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.