我在控件后面的代码中有一个变量。我想将此值传递给Web控件中的Ext.Net控件。在我的实例中,我有一个ext.multicombo,我想将一个值传递给它的工具提示。
代码背后:
protected override void OnPreRender(EventArgs e)
{
this.MaxFuelFilter = System.Configuration.ConfigurationManager.AppSettings["MyVariable"];
}
Control.aspx
<ext:multicombo ID="ddlFlightNumber" runat="server" ClientID="ddlFlightNumber" IndicatorTip="blah blah blah <%=MyVariable%> blah blah blah"></ext:multicombo>
我该怎么办?
由于
答案 0 :(得分:2)
有一些问题:
您使用的语法不适用于ASP.NET控件。这是ASP.NET限制,与Ext.NET无关。
这不是有效的ASP.NET语法:
PropertyName="foo foo <%=MyVariable%>"
而且,这不是有效的ASP.NET语法:
PropertyName="<%=MyVariable%>"
要将值传递给属性,您需要使用<%# %>
DataBinding语法。
虽然,这也是无效的ASP.NET语法:
PropertyName="foo foo <%# MyVariable %>"
该属性必须仅包含数据绑定变量/脚本,例如
PropertyName="<%# MyVariable%>"
AND ...你必须在Control上调用.DataBind(),例如
this.MyControl1.DataBind();
或者,使用Ext.NET控件,您可以设置.AutoDataBind="true"
属性,并自动为您处理DataBinding,例如
<ext:TextField runat="server" PropertyName="<%# MyVariable%>" AutoDataBind="true" />
以上自定义属性自动序列化为JavaScript,现在可供该控件的客户端实例(以及其他)使用。然后,您可以从其他JavaScript代码调用该属性。
对于您的方案,我建议您点按<AfterRender>
的{{1}}监听器以获取属性值并设置其他内容。以下示例演示了完整方案(<ext:MultiCombo>
),并演示了另一种基本技术(myVar
),用于将JavaScript变量从服务器端传递到客户端。
示例强>
myVar2
您应该能够调整上述内容以使用自定义控件。
希望这有帮助。
答案 1 :(得分:0)
MyVariable
在哪里定义?如果它是页面类的public
或protected
成员,并且在页面生命周期中尽早初始化(Page_Init
也许?也许Page_Load
但我会仔细检查并测试它然后这种方法应该工作。