6

I'm having a bit of difficulty setting a variable from the code behind and utilising it in the ASP.NET page (setting it as the value inside a textbox). My webpage simply errors and says it does not exist in the current context. The variable is declared and set all in the Page_Load method.

Here is the relevant ASP.NET code. I assume you will not need to see the code behind, as I have tested outputting the variable via the codebehind (using Response.Write) and that works fine.

 <asp:TemplateField HeaderText="Initial Path" 
                SortExpression="Initial_Path">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox6" runat="server" 
                        Text='<%# initialPath %>'></asp:TextBox>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox ID="TextBox8" runat="server" 
                        Text='<%# initialPath %>'></asp:TextBox>
                </InsertItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label8" runat="server" Text='<%# initialPath %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>

Thanks :)

EDIT: Ok sure, here's the relevant parts of the code behind

       string schedID = sched.SchedulerInstanceId;
        JobDetail jobDetail2 = sched.GetJobDetail(Request.QueryString["JOB_NAME"], "sched1");
        JobDataMap dataMap2 = jobDetail2.JobDataMap;
        initialPath = dataMap2.GetString("initialPath");
        Response.Write(initialPath);

The response.write is for debugging - it outputs the variable correctly so the variable is actually set

EDIT 2: Here is the code behind

public partial class EditJobDetails : System.Web.UI.Page
    {
    public string initialPath { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {

        //Scheduler stuff for Quartz.NET, removed because of length

        string schedID = sched.SchedulerInstanceId;
        JobDetail jobDetail2 = sched.GetJobDetail(Request.QueryString["JOB_NAME"], "sched1");
        JobDataMap dataMap2 = jobDetail2.JobDataMap;
        initialPath = dataMap2.GetString("initialPath");
    }

What's not working is just the <%= initialpath %> in the ASP form. It simply just doesn't show anything, like the variable is assigned nothing

4
  • 2
    Your code-behind is at least as important to this problem. Can you show us that too? Commented Oct 4, 2010 at 15:41
  • 1
    I think we need more information as Kirk said. The Edit still doesn't tell us if "initialPath" is public, or if its accessed via a property... Commented Oct 4, 2010 at 15:50
  • 1
    Sorry, I've now made the variable public as CrazyDart demonstrated below, so the variable declartion is like this: Commented Oct 4, 2010 at 15:54
  • 1
    public string initialPath { get; set; } Commented Oct 4, 2010 at 15:55

3 Answers 3

13

In the codebehind you need to create it as a public property. Then you can use it all you want in the aspx page.

in code behind:

public string yourvar { get; set; }

in aspx:

    <EditItemTemplate>
        <asp:TextBox ID="TextBox6" runat="server" 
            Text='<%= yourvar %>'></asp:TextBox>
    </EditItemTemplate>
Sign up to request clarification or add additional context in comments.

5 Comments

Cheers buddy, but for some reason the field it's supposed to be in the ASP.NET form is blank
In your Page_Load you do need to set the content of your var, can you post sample code of whats not working? Please include the property, the pageload and the aspx.
Added the relevant parts :) the actual variable is assigning as I can output it from the code behind using Response.Write, but I can't get it to transfer over using <%= initialPath %>
ok, so I think I am starting to get the situation... the TemplateField needs to have a data source. Its made to iterate over a collection of something, not just display a string.
I'm using the template fields as part of a details view - most of the things I need to display in the details view are simply fields from the table so that is automatically done. For some of the fields, including this, it's installed inside a 'binary image' as I'm using Quartz.NET, and to get the information out I need to do some work in the codebehind, if that makes sense
4

What I don't see here is where the call to DataBind() is made. If it's made before is set then <%#initialPath%> will write its starting value (null, which gets written as an empty string in such a case). If it's not made at all, then <%#initialPath%> will never write anything. You need to make sure DataBind() is called at an appropriate time, such as at the end of Page_Load

1 Comment

Ah, I put DataBind at the end and it now works fine. Thanks, and thanks also to everyone who helped :)
3

<%# initialPath %> is a databinding expression meaning that ASP.NET will look for a initialPath property on the collection you are binding to. Obviously such property doesn't exist as this is a local variable.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.