开发者

User control with a client side API

开发者 https://www.devze.com 2023-02-14 01:41 出处:网络
Maybe I\'ve picked a totally inappropriate/bad example. What I have is a user control that contains a bunch of dynamically created Telerik RadGrids.

Maybe I've picked a totally inappropriate/bad example. What I have is a user control that contains a bunch of dynamically created Telerik RadGrids. My user control is added to a couple of Telerik RadPageViews that are part of a RadMultiPage that is used alongside a RadTabStrip. What I need to do is call a Javascript function in my usercontrol to update it's display whenever it's parent RadPageView is selected. So basically I have the following Javascript code:

function OnClientTabSelected(sender, args)
{
    // Get the MyControl that is on this tab
    var myControl = $find("whatever");

    // Call a method that updates the display
    myControl.doSomething();
}

Thanks,

Da开发者_运维知识库vid


You can add a wrapper div in your User Control and then extend that div using jQuery to add your desired methods and properties. The trick is to set the div's id='<%=this.ID%>' - that way the div has the same ID as the User Control (which is fine because the User Control doesn't actually render anything - only its contents).

Then back on your containing page, you can just reference your UserControl's ID using $get('whatever') - and you'll actually select your extended div.. which will have all your methods and properties on it.

The nice thing about this approach is that all of your methods and properties and neatly scoped and nothing is in the global namespace.

I have a full demo solution and details here if you want more info: http://programmerramblings.blogspot.com/2011/07/clientside-api-for-aspnet-user-controls.html


Just make a call to javascript method in input button if you are sure about the name of that function.

<input type="button" value="test" onclick="doSomething()" />

If you place any javascript code in the control that will be spit on the page and it will be available for calling provided both of them are in the same form.

for example your code will look like this if you look into the source of that page.

<script type="text/javascript">    
    function doSomething()
    {
      alert(new Date());
    }
</script>

<div>
  <span id="MyControl1_Label1">Dummy label</span>
</div>
<hr />
<input type="button" value="test" onclick="doSomething()" />

Edit: This is not a good way to access these methods in my opinion. When you are putting some javascript code inside a control then it should be used in that control only (There is no rule as such, its just a design suggestion). If you are trying to access javascript code of a control from outside that control then you need to revisit your design.

If you can give us more details on why you want to access that method, may be we can suggest some better way to do that.

Update: (As you have modified your question): Bit tricky to answer this as I dont have hands on experience with Rad controls. I guess there should be some feature which will help you to update the controls in that page without using javascript, may be have a look at clientside-API provided for Rad.

May be somebody who knows about RAD controls will help you.


You should make the control method public

public void doSomething

and call this from the page

myControl1.doSomething();
0

精彩评论

暂无评论...
验证码 换一张
取 消