2010-01-11 60 views
0

我试图让一个asp.net dropdownlist控件成为一个dijit组合框,但它不工作。asp.net控件(.ascx)与dijit?

我已经尝试过这样的:

<asp:DropDownList ID="ddlUserID" dojoType="dijit.form.ComboBox" runat="server" 
    DataTextField="FullNameAndUserName" 
    CssClass="stdtext" DataValueField="UserID" AppendDataBoundItems="True" 
    AutoPostBack="True" 
    meta:resourcekey="ddlUserIDResource1" EnableTheming="False"> 
    <asp:ListItem Text="(All Users)" Value="0" meta:resourcekey="ListItemResource1" /> 
</asp:DropDownList> 
    <script type="text/javascript" src="../scripts/dojo/dojo.js"></script> 
    <script type="text/javascript"> 
    dojo.require('dijit.form.ComboBox'); 
</script> 

的路径的dojo.js相对于ascx控件的含父页和负载细根据萤火。

呈现的HTML是这样的:

<select id="invoiceReport1_ddlUserID" class="stdtext" dojotype="dijit.form.ComboBox" onchange="javascript:setTimeout('__doPostBack(\'invoiceReport1$ddlUserID\',\'\')', 0)" name="invoiceReport1$ddlUserID"> 
    </select> 
    <script src="../scripts/dojo/dojo.js" type="text/javascript"> 
    </script> 
    <script type="text/javascript"> 
    </script> 
    <script type="text/javascript"> 

看着从http://docs.dojocampus.org/dijit/form/ComboBox 的例子,我不能明白为什么得到的选择标记是不是一个组合框。

我也试过这样:

HtmlGenericControl ctrl1 = new HtmlGenericControl("Script"); 
ctrl1.Attributes.Add("Type", "Text/Javascript"); 
ctrl1.Attributes.Add("src", "../Scripts/dojo/dojo.js"); 
this.Page.Header.Controls.Add(ctrl1); 


HtmlGenericControl ctrl2 = new HtmlGenericControl("Script"); 
ctrl2.Attributes.Add("Type", "Text/Javascript"); 
ctrl2.InnerText = "dojo.require('dijit.form.ComboBox');"; 
this.Page.Header.Controls.Add(ctrl2); 

有什么建议?

+0

加入后 ctrl1.Attributes.Add(“djConfig”,“parseOnLoad:true”); 我现在得到外观上的问题... 我得到一个▼然后一个X然后一个文本框,然后所有的列表项目都显示为所有其他内容下的项目符号列表。 – 2010-01-11 02:16:54

+0

onchange是直的JS,而不是url,所以你可能会想放弃“javascript:” – peller 2010-01-11 15:39:09

回答

1

解决方案结束了这一点:

您必须参考dijit.css无论是在样式表或直接。

+0

dijit.css本身并不真正起作用。你通常想要引入其中的一个主题,比如tundra.css(或者只是Tundra主题中的相关小部件css文件),然后将其引入dijit.css。把class ='tundra'放在身上。 – peller 2010-01-11 15:40:26