【发布时间】:2010-03-19 14:41:54
【问题描述】:
我在更新面板中有一个 gridview 控件。当我运行应用程序并查看生成的源代码时,没有关于 gridview 的源代码。所以,我无法接近 gridview 中的元素。
我的问题是,gridview 的渲染代码在哪里,我该如何处理其中的控件?
【问题讨论】:
标签: c# asp.net gridview updatepanel
我在更新面板中有一个 gridview 控件。当我运行应用程序并查看生成的源代码时,没有关于 gridview 的源代码。所以,我无法接近 gridview 中的元素。
我的问题是,gridview 的渲染代码在哪里,我该如何处理其中的控件?
【问题讨论】:
标签: c# asp.net gridview updatepanel
您是否尝试通过浏览器查看源代码?如果您想从 gridview 中访问您的控件,这绝不是一个好主意。
从 gridview 中访问控件的方法是在后面的代码中找到它们。如果您需要将它们传递给某些客户端脚本,您应该使用控件的ClientID 属性。这是我在 gridview 的 RowDataBound 事件中所做的一个示例。
protected void checkGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Button moveButton = (Button)e.Row.Cells[9].Controls[1];
moveButton.Attributes.Add("onclick","someJavaScript('"+moveButton.ClientID+"');");
}
}
编辑
为了向您展示您必须在客户端执行的操作,这里有一个使用 ClientID 的简单 javascript 函数
function someJavaScript(buttonID)
{
var button = document.getElementByID(buttonID);
button.Click();
}
你也可以使用 $get 函数说
var button = $get(buttonID);
【讨论】:
澄清一下:您已经在网络浏览器中打开页面,然后按“查看源代码”并且您无法找到与 GridView 对应的 HTML 表,而它存在于屏幕上? 如果是这样,那就可以理解了——欢迎来到动态 html 的 AJAX 世界。 要查看表格,请使用:
所有这些工具都有菜单:Inspect Element - 按下它可以看到真实的 DOM 树。
相对于“接近”的问题。 ASP.Net 控件对所有控件都有非常有用的方法属性 ClientID - 此 id 包含非人类字符串如何命名元素,包括所有父母姓名容器。使用此 ID,您可以通过 document.getElementByID 定位元素
【讨论】: