严格来说是BoundColumn没有进行HTML编码。
不用BoundColumn,那么不是好麻烦了?一个好的方法是继承BoundColumn.....
不用BoundColumn,那么不是好麻烦了?一个好的方法是继承BoundColumn.....
解决方案 »
- AjaxControlToolkit autoplete 怎样才能只填入 下拉列表中的 一列,而不是全部
- 读取oreacle数据问题
- 请教自定义web控件
- .net 后台动态控制DIV样式的问题
- 用代码改变水晶报表组字段的排序方式.
- 熄灯前最后一问!!求解!!
- 在服务器控件或者别的控件实现这样的要求
- Response.Redirect("left.aspx");
- 如何获取treeview中某一节点之下的所有子节点(包括子节点的字节点)的ID。
- 怎样在aspx中实现弹出新的窗口?
- 高分求:icyer写的一段代码解释。msdn上讲的太书面话,难以理解?请用通俗的解释?up者有分
- 大大跳战!!!!日历控件!。。。。。。
using System.Web;
using System.Web.UI.WebControls;namespace XX.Controls
{
/// <summary>
/// 对绑定的数据进行HTML编码。
/// </summary>
public class EncodedBoundColumn:BoundColumn
{
protected override string FormatDataValue(object dataValue)
{
string res=base.FormatDataValue(dataValue);
return HttpUtility.HtmlEncode(res);
}
}
}
-------
<XX:EncodedBoundColumn DataField="AnyXML"></XX:EncodedBoundColumn>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<script language="C#" runat="server">
class Item
{
public string Value
{
get{
return "<span style='color:red'>"+this.GetHashCode()+"</span>";
}
}
}
protected override void OnLoad(EventArgs e)
{
ArrayList al=new ArrayList();
for(int i=0;i<10;i++)
al.Add(new Item());
DataGrid1.DataSource=al;
DataGrid1.DataBind();
}
void OnItemDataBound(Object sender, DataGridItemEventArgs e)
{
int index=0;
foreach(DataGridColumn c in DataGrid1.Columns)
{
if(c is BoundColumn)
{
e.Item.Cells[index].Text=HttpUtility.HtmlEncode(e.Item.Cells[index].Text);
}
index++;
}
} </script>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="WebForm1" method="post" runat="server">
<asp:DataGrid id="DataGrid1" runat="server" OnItemDataBound="OnItemDataBound">
<Columns>
<asp:BoundColumn DataField="Value"></asp:BoundColumn>
</Columns>
</asp:DataGrid>
</form>
</body>
</HTML>
在页面上就可以显示出来,很好的效果!