修改gridview的html输出

修改gridview的html输出,html,asp.net,gridview,Html,Asp.net,Gridview,我试图在RowDataBound事件处理程序中修改GridView的输出,但它不起作用-什么都没有发生 我的代码: Private Sub MyGridView_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles MyGridView.RowDataBound e.Row.Attributes.Add("data-xkoordinat", 0) End Sub 我期望看到的是: &l

我试图在RowDataBound事件处理程序中修改GridView的输出,但它不起作用-什么都没有发生

我的代码:

Private Sub MyGridView_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles MyGridView.RowDataBound
    e.Row.Attributes.Add("data-xkoordinat", 0)
End Sub
我期望看到的是:

<tr data-xkoordinat="0">..</tr>

这里是否有任何东西会导致行不被数据绑定?我正在通过F5或在浏览器中选择地址字段并按Enter键重新加载,所以我认为回发不应该是个问题。

哼哼。。。这应该行得通

检查事项:

  • 你是怎么看消息来源的?如果使用Firebug之类的工具,则显示的源实际上不是浏览器接收到的源。它可能已从显示中删除该属性,因为它在“标准”HTML中不存在。使用浏览器的“查看html源代码”功能检查源代码,确保未呈现该源代码
  • 也许您有一个编辑呈现HTML的库(我曾经使用过一个库,它生成了一个更加CSS友好的HTML),它也可能删除了未知属性
  • 我知道这很明显,但请确保没有对Attributes.Clear()的调用
我正在考虑这个问题,但这个片段应该有用…
,但我不确定这是否有用

更新: 请注意,您需要在Gridview声明中声明行数据绑定方法,它不会自动发生:

<asp:GridView ID="gvMyGrid" runat="server" onrowdatabound="gvMyGrid_RowDataBound">
...
</asp:GridView>

...

哼哼。。。这应该行得通

检查事项:

  • 你是怎么看消息来源的?如果使用Firebug之类的工具,则显示的源实际上不是浏览器接收到的源。它可能已从显示中删除该属性,因为它在“标准”HTML中不存在。使用浏览器的“查看html源代码”功能检查源代码,确保未呈现该源代码
  • 也许您有一个编辑呈现HTML的库(我曾经使用过一个库,它生成了一个更加CSS友好的HTML),它也可能删除了未知属性
  • 我知道这很明显,但请确保没有对Attributes.Clear()的调用
我正在考虑这个问题,但这个片段应该有用…
,但我不确定这是否有用

更新: 请注意,您需要在Gridview声明中声明行数据绑定方法,它不会自动发生:

<asp:GridView ID="gvMyGrid" runat="server" onrowdatabound="gvMyGrid_RowDataBound">
...
</asp:GridView>

...

我不知道为什么,但现在它可以工作了。我相信这可能与提供旧版本代码的服务器有关,因为当我添加跟踪注释以查看发生了什么时,什么都没有显示——即使在我编译并重新加载之后


现在,突然间,一切都按预期进行了。我做的唯一一件事就是重新编译,所以我认为问题出在旧代码上。对于其他发现这一点的人:问题中提供的代码应该可以工作-只需确保提供给浏览器的确实是该代码…

我不知道为什么,但现在它可以工作了。我相信这可能与提供旧版本代码的服务器有关,因为当我添加跟踪注释以查看发生了什么时,什么都没有显示——即使在我编译并重新加载之后


现在,突然间,一切都按预期进行了。我做的唯一一件事就是重新编译,所以我认为问题出在旧代码上。对于其他发现这一点的人:问题中提供的代码应该可以工作-只需确保提供给浏览器的实际上是该代码…

我在Chrome中使用开发人员工具(即firebug copy),但如果我说“查看源代码”,该属性仍然不存在。当我的javascript试图读取它时,会抛出一个异常。我没有修改html的库,也没有对Attributes.Clear()的调用。我注意到跟踪中没有RowDataBound方法的条目,但我不知道是否应该有。@Your update:证明它确实是自动发生的。或者,不是自动的,但是您会在我的代码中注意到,我将事件处理程序连接到codebehind端,而不是aspx端。两者都可以,只要有一个在那里。(如果您同时执行这两种操作,事件处理程序可能会被触发两次,这有时会产生非常意外的结果…)但是,正如您在我自己的回答中看到的,这也不是问题所在。哦,好的。我没有看到装订。对不起,我不习惯VB语法。在C#中,您无法将事件方法绑定到声明中的事件(或者我从未见过它)。我在Chrome中使用开发工具(即firebug copy),但如果我说“查看源代码”,该属性仍然不存在。当我的javascript试图读取它时,会抛出一个异常。我没有修改html的库,也没有对Attributes.Clear()的调用。我注意到跟踪中没有RowDataBound方法的条目,但我不知道是否应该有。@Your update:证明它确实是自动发生的。或者,不是自动的,但是您会在我的代码中注意到,我将事件处理程序连接到codebehind端,而不是aspx端。两者都可以,只要有一个在那里。(如果您同时执行这两种操作,事件处理程序可能会被触发两次,这有时会产生非常意外的结果…)但是,正如您在我自己的回答中看到的,这也不是问题所在。哦,好的。我没有看到装订。对不起,我不习惯VB语法。在C#中,您无法将事件方法绑定到声明中的事件(或者我从未见过)。根据您的更新更新了我的答案:我认为您忘记声明rowdatabound事件。根据您的更新更新了我的答案:我认为您忘了声明rowdatabound事件。
<asp:GridView ID="gvMyGrid" runat="server" onrowdatabound="gvMyGrid_RowDataBound">
...
</asp:GridView>