Javascript 如何通过客户端上的JSProperties访问DevXPress ASPx控件
假设我有几个DevExpress控件,其中一个是按钮。在该按钮上,我想添加其他每个控件的ClientInstanceName,以便在按钮客户端单击事件中访问它们 c#: 我想做一些类似的事情 js: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">
功能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];