Solved

Problem in getting the control on runtime

Posted on 2009-05-13
12
168 Views
Last Modified: 2013-11-08
Hi

I have created a web custom control.The class is inherited from TextBox class.
I have made a property called MTBID as ID of the control.

I can put that control on aspx page and everything is working fine, but when I try to access the control in code behind file.

It is not working well.
0
Comment
Question by:KaranGupta
  • 5
  • 5
  • 2
12 Comments
 
LVL 11

Expert Comment

by:Muhammad Ousama Ghazali
ID: 24382025
Are you sure you made your property with Public rather than Private or Protected?
0
 

Author Comment

by:KaranGupta
ID: 24382043
yes

public string MTBID
        {
            get;
            set;
        }      


0
 
LVL 11

Expert Comment

by:Muhammad Ousama Ghazali
ID: 24382115
Can you please paste the code how are you creating your custom control within ASPX Source.
Have you referenced it properly at the top of the page?
0
 

Author Comment

by:KaranGupta
ID: 24382118
Here we go
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

<%@ Register TagPrefix="FTB" Namespace="MultiPurposeTextBox" Assembly="MultiPurposeTextBox" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>Untitled Page</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

    <FTB:MultiPurposeTextControl ID="karan"  MTBErrorMessageControlType="VALIDATIONSUMMARY"  MTBText="karan"

                 runat="server"></FTB:MultiPurposeTextControl>

    

    </div>

    </form>

</body>

</html>

Open in new window

0
 
LVL 11

Expert Comment

by:Muhammad Ousama Ghazali
ID: 24382154
You may be annoyed by these questions but...
Have you referenced the correct version of the assembly containing the control in this project?
And make sure that the DLL of the custom object is either registered within GAC or placed within bin folder of the current project.
After referencing, try closing the page from design and code behind mode. Re-open ASPX file in Design mode. Try double click anywhere on the form to move to code behind and see if you can now refernce your control or not. If you are still unable to do that, try creating a reference by yourself in the main .vb file of .designer.vb file and see if it gets to work.
 
0
 
LVL 9

Expert Comment

by:tetorvik
ID: 24382157
Are you setting MTBID at runtime and it gets cleared on postback?
if so you'll need to keep the value in viewstate for example. See below how ASP.NET TextBox Text property is implemented.

you could also use the control like this without needing the viewstate implementation:
  <FTB:MultiPurposeTextControl ID="karan" MTBID="somevalue"  MTBErrorMessageControlType="VALIDATIONSUMMARY"  MTBText="karan"
                 runat="server"></FTB:MultiPurposeTextControl>



public virtual string Text

{

    get

    {

        string str = (string) this.ViewState["Text"];

        if (str != null)

        {

            return str;

        }

        return string.Empty;

    }

    set

    {

        this.ViewState["Text"] = value;

    }

}

Open in new window

0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 

Author Comment

by:KaranGupta
ID: 24382167
Hi tetorvik

I think we need to specify some attribute over the property

so that we can use it as ID
0
 

Author Comment

by:KaranGupta
ID: 24382173
Hi moghazali

Please don't hesitate in asking the question. I'll never be annoyed

Yes I have added the reference of the dll by "Add Reference"
0
 

Author Comment

by:KaranGupta
ID: 24382185
Hi

I more thing I want to share is

there is another attribute called ID
 <FTB:MultiPurposeTextControl MTBID="karan122"  MTBErrorMessageControlType="LABEL"  MTBText="123"
                 runat="server"></FTB:MultiPurposeTextControl>

when I define ID then I can get the value in code behind but not in case of MTBID
0
 
LVL 11

Accepted Solution

by:
Muhammad Ousama Ghazali earned 500 total points
ID: 24382208
I think the ASP.NET may need the ID property to appropriate emit it as HTML and resolve many other aspects. See the following link for a little more detail:
http://msdn.microsoft.com/en-us/library/hw8sf6fb.aspx
However, you may still use MTBID in both declaration and code behind as an additional property defined in your class.
0
 
LVL 11

Expert Comment

by:Muhammad Ousama Ghazali
ID: 24382213
I did not dig into details but this page may also give idea on the similar but necessarily the same issue:

http://msdn.microsoft.com/en-us/library/hw8sf6fb.aspx
0
 
LVL 9

Expert Comment

by:tetorvik
ID: 24382321
I think ID is really required. At least I haven't seen/found any attribute that would make a custom property to replace original ID property.
It also seems that if you declare a custom control without ID like:<FTB:MultiPurposeTextControl MTBID="karan122"  MTBErrorMessageControlType="LABEL"  MTBText="123" runat="server"></FTB:MultiPurposeTextControl>
the runtime generates a "random" ID for it. In that case it is really difficult to use the control in code-behind without knowing the ID. To use the control in code behind you would need to create a helper method to browser through the page controls and returns the correct control based on control type and MTBID attribute.

I think this can be done, but I don't think you should.







0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

More often than not, we developers are confronted with a need: a need to make some kind of magic happen via code. Whether it is for a client, for the boss, or for our own personal projects, the need must be satisfied. Most of the time, the Framework…
A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now