Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过客户端上的JSProperties访问DevXPress ASPx控件_Javascript_Asp.net_Devexpress - Fatal编程技术网

Javascript 如何通过客户端上的JSProperties访问DevXPress ASPx控件

Javascript 如何通过客户端上的JSProperties访问DevXPress ASPx控件,javascript,asp.net,devexpress,Javascript,Asp.net,Devexpress,假设我有几个DevExpress控件,其中一个是按钮。在该按钮上,我想添加其他每个控件的ClientInstanceName,以便在按钮客户端单击事件中访问它们 c#: 我想做一些类似的事情 js: 功能BTN单击(s、e){ var theTxtBx=document.getElementById(s.cp_MyTxtBx); SetText('some text'); } 但这不起作用。 我知道我可以这样做: <script type="text/javascript">

假设我有几个DevExpress控件,其中一个是按钮。在该按钮上,我想添加其他每个控件的ClientInstanceName,以便在按钮客户端单击事件中访问它们

c#:

我想做一些类似的事情

js:


功能BTN单击(s、e){
var theTxtBx=document.getElementById(s.cp_MyTxtBx);
SetText('some text');
}
但这不起作用。 我知道我可以这样做:

<script type="text/javascript">
        function btnClick(s, e) {
            MyTxtBx.SetText('some text');
        }
</script>

功能BTN单击(s、e){
MyTxtBx.SetText('some text');
}
但这些控件是动态创建的,在运行时之前我不会知道它们的ClientInstanceName

那么,如何根据ClientInstanceName的String属性获取控件

提前谢谢

相关职位,但不完全是我需要的:


你可以破解一些东西

基本上,在动态创建文本框时,为它们指定一个唯一的客户端实例名称

在页面加载结束时,您可以发出一些javascript来声明和数组,并将元素设置为与textbox对象相等

var ServerSideList = new List<string>();

while(CreatingTextBoxes)
{
    ...
    ServerSideList.Add(uniqueTextboxName);
}
....


var sb = new System.Text.StringBuilder();

sb.AppendLine("var clientSideList = [];");

foreach(var s in ServerSideList)
{
        sb.Append("clientSideList.push(");
        sb.Append(s);
        sb.AppendLine(");");
}

AspLiteralObject.Text = sb.ToString();
var ServerSideList=newlist();
while(创建文本框)
{
...
添加(uniqueTextboxName);
}
....
var sb=new System.Text.StringBuilder();
sb.AppendLine(“var clientSideList=[];”);
foreach(ServerSideList中的var s)
{
sb.Append(“clientSideList.push”(“);
某人追加;
某人以“;”号结尾;
}
AspLiteralObject.Text=sb.ToString();
在客户端按钮单击事件中,您可以迭代clientSideList数组

<script type="text/javascript">
    function btnClick(s, e) {
        var i;
        var theTxtBx;

        for(i = 0; i < clientSideList.length; i++)
        {
            theTxtBx = clientSideList[i];
            theTxtBx.SetText('some text');
        }
    }
</script>

功能BTN单击(s、e){
var i;
var theTxtBx;
对于(i=0;i
如果我理解正确,这就是您需要的:

var theTxtBx = window[s.cp_MyTxtBx];

每个设置了ClientInstanceName的devex控件都注册为全局变量。

我实际上已经找到了这个解决方案,但我无法回答我自己的问题:ASPxClientControl.GetControlCollection().GetByName(s.cp_MyTxtBx).SetText('这是我的文本'),但窗口版本似乎更好。一种方式比另一种好吗?我广泛使用我的版本,一切都按预期进行。如你所见,它相当短。
<script type="text/javascript">
    function btnClick(s, e) {
        var i;
        var theTxtBx;

        for(i = 0; i < clientSideList.length; i++)
        {
            theTxtBx = clientSideList[i];
            theTxtBx.SetText('some text');
        }
    }
</script>
var theTxtBx = window[s.cp_MyTxtBx];