1

我正在使用 ASP.Net ScriptManager 控件。它已经在页面上。

<asp:UpdatePanel ID="UpdatePanel3" runat="server">
    <ContentTemplate>
        <asp:Panel ID="cpBox" Visible="false" runat="server">
            <!-- jQuery plugin goes here -->
        </asp:Panel>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="ddlColorChart" />
    </Triggers>
</asp:UpdatePanel>

C#:

protected void ddlColorChart_SelectedIndexChanged(object sender, EventArgs e)
{
    if (ddlColorChart.SelectedValue == "1")
    {
        // cpBox.Visible = true;
        /* StringBuilder colorPicker = new StringBuilder();
        colorPicker.Append("$(document).ready(function() {");
        colorPicker.Append("$('#<%=colorPickerBox.ClientID %>').ColorPicker({ flat: true });");
        colorPicker.Append("})");
        ScriptManager.RegisterStartupScript(colorPickerBox, this.GetType(), "colorPicker", colorPicker.ToString(),  true);
        */
    }
}

jQuery:

<script type="text/javascript"">
    $(document).ready(function () {
        $('#<%=colorPicker_Box.ClientID %>').ColorPicker({ flat: true });
    });
</script>

如您所见,我尝试使用ScriptManager.RegisterStartupScript. 我一生都无法弄清楚如何让 jQuery 插件显示出来。我尝试使用 jQuery AJAX 并迷路了。

编辑:我知道如果我把它放在一个普通的 div 中,插件就可以工作。一旦我添加'runat="server",'它就会停止工作(这是有道理的)。有没有办法让我使用 ASP.Net AJAX 来完成这个,而插件的容器不是服务器控件?

4

1 回答 1

2

<%= %>是服务器代码;JavaScript 无法执行它。所以你想从服务器端传递控件的客户端 ID。

colorPicker.Append("$('#" + colorPickerBox.ClientID " + 
   "').ColorPicker({ flat: true });");

更新:如果ColorPicker不是服务器控件,那就更简单了——

colorPicker.Append("$('#colorPickerBox').ColorPicker({ flat: true });");
于 2013-03-14T23:09:05.053 回答