我正在使用ASP net Ajax工具包并在 UpdatePanel 中有一个 GridView ,一切正常。

当我尝试针对应该生成的表运行一些 JQuery 时,没有任何 GridView (或表 HTML )。我假设这是由ASP生成的 Javascript

完成的

如何对 UpdatePanel 中的 GridView 执行任何操作?

有帮助吗?

解决方案

ASP.NET会在某些条件下破坏控件的名称。您可能希望查看生成的源,以确保在生成时由ASP.NET提供的名称引用控件。它可能不是您在标记中给出的名称。

其他提示

如果你可以在代码隐藏中生成你的javascript,在Page_Load for insistence中,那么你可以将你的GridView1.ClientID等注入到你的javascript中。 (例如,我在这里使用TextBox,但它遵循相同的概念。)

protected void Page_Load(object sender, EventArgs e)
{
    string js = "$(document).ready(function(){$(\"#" + this.TextBox1.ClientID + "\").text('hello world');});";
    HtmlGenericControl script = new HtmlGenericControl("script");
    script.Attributes.Add("type", "text/javascript");
    script.InnerHtml = js;
    Page.ClientScript.RegisterStartupScript(this.GetType(), "key", js, true);
}

我能想到有三种解决方案。第一个,从服务器注入带有ClientID的JavaScript,正如戴夫所说的那样,可以正常工作,但实际上非常麻烦。我这样做了一段时间,但服务器端和客户端的这种紧密耦合会导致问题。

第二种是提供另一种识别实体的方法,例如css类。这比第一个选项更好,但是你需要保留很多无关的类定义。

我更喜欢的解决方案是使用像jQuery这样的javascript框架,它有一个选择器引擎。这样,您可以通过一些聪明的选择和DOM遍历来绕过UniqueID垃圾。

假设你有一个名为myControl的控件。 ASP.Net之前会生成一个巨大的命名空间,因此渲染时不会发生任何ID冲突。但你可以通过执行$('[id $ = myControl]')选择每个myControl,它选择id为myControl的每个对象。在其他框架中可能有类似的方法,但我不熟悉它们给出一个例子。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top