2012-08-16 70 views
0

我有一個問題,使HtmlEncode在ASP.Net的GridView中正常工作。基本上我使用TemplateField來切換ItemTemplate和EditItemTemplate以在GridView本身上輸入數據。我正在尋找一些資源,以便我可以在ASP.Net中編碼Eval和Bind方法,但所有這些方法在我的結尾都不起作用。HtmlEncode在asp.net中不工作

這裏是我下面的代碼:

<div id="dvShowContent" runat="server" style="text-align: center"> 
    <asp:GridView ID="dgvSortKey" runat="server" AllowSorting="True" OnRowDataBound="gv_drb" 
     AutoGenerateColumns="False" AllowPaging="True" BackColor="White" BorderColor="#336666" 
     BorderStyle="Double" BorderWidth="3px" CellPadding="4" GridLines="Horizontal" 
     Height="73px" AutoGenerateEditButton="True" OnRowEditing="dgvSortKey_RowEditing" 
     OnRowUpdating="dgvSortKey_RowUpdating" OnRowCancelingEdit="dgvSortKey_RowCancelingEdit" 
     OnSelectedIndexChanging="dgvSortKey_SelectedIndexChanging" OnPageIndexChanged="dgvSortKey_PageIndexChanged" 
     OnPageIndexChanging="dgvSortKey_PageIndexChanging" OnRowCommand="dgvSortKey_RowCommand" 
     OnRowDeleted="dgvSortKey_RowDeleted" OnRowUpdated="dgvSortKey_RowUpdated" Width="561px" 
     PageSize="15" DataKeyNames="KeyCode,KeyDescription"> 
     <FooterStyle BackColor="White" ForeColor="#333333" /> 
     <RowStyle BackColor="White" ForeColor="#333333" /> 
     <PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" /> 
     <SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#336666" Font-Bold="True" ForeColor="White" HorizontalAlign="Center" /> 
     <AlternatingRowStyle BackColor="LightCyan" /> 
     <Columns> 
      <asp:TemplateField HeaderText=""> 
       <ItemTemplate> 
        <asp:LinkButton ID="lnkdelete" runat="server" OnClick="lnkdelete_Click">Delete</asp:LinkButton> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Instruction Key Code"> 
       <ItemTemplate> 
        <asp:Label ID="lblValKeyCode" runat="server" Text='<%# Server.HtmlEncode((string)Eval("KeyCode")) %>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtValKeyCode" runat="server" Text='<%#Bind("KeyCode") %>' MaxLength="10"></asp:TextBox> 
        <%--<asp:TextBox ID="txtValKeyCode" runat="server" Text='<%#System.Web.HttpUtility.HtmlEncode(Eval("KeyCode").ToString()) %>' MaxLength="10"></asp:TextBox>--%> 
       </EditItemTemplate> 
       <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" CssClass="GvBorderGreen" /> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Description"> 
       <ItemTemplate> 
        <asp:Label ID="lblValKeyDescription" runat="server" Text='<%# Server.HtmlEncode((string)Eval("KeyDescription")) %>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtValKeyDescription" runat="server" Text='<%#Bind("KeyDescription") %>' 
         MaxLength="10"></asp:TextBox> 
        <%--<asp:TextBox ID="txtValKeyDescription" runat="server" Text='<%#System.Web.HttpUtility.HtmlEncode(Eval("KeyDescription").ToString()) %>' 
         Width="300" MaxLength="20"></asp:TextBox>--%> 
       </EditItemTemplate> 
       <ItemStyle CssClass="GvBorderGreen" /> 
      </asp:TemplateField> 
      <%--<asp:BoundField DataField="KeyCode" HeaderText="Instruction Key Code" HtmlEncode="true" /> 
      <asp:BoundField DataField="KeyDescription" HeaderText="Description" HtmlEncode="true" />--%> 
     </Columns> 
    </asp:GridView> 
</div> 

請幫我解決這個問題。

+0

HTTP的重複:// stackoverflow.com/questions/512517/how-to-use-htmlencode-with-templatefields-data-binding-and-a-gridview – 2012-08-16 11:02:49

回答

2

由於瓦卡表明答案是,他提供的鏈接 - 使這個更清晰,你需要改變這一行:

<asp:TextBox ID="txtValKeyCode" runat="server" Text='<%#Bind("KeyCode") %>' MaxLength="10"></asp:TextBox> 

要這樣:

<asp:TextBox ID="txtValKeyCode" runat="server" Text='<%#System.Web.HttpUtility.HtmlEncode((string)Eval("KeyCode")) %>' MaxLength="10"></asp:TextBox>