【问题标题】:Replace HTML content in gridview with Linkbutton用 Linkbutton 替换 gridview 中的 HTML 内容
【发布时间】:2015-02-16 15:50:18
【问题描述】:

我想用 Linkbutton 替换我的 gridview 列(包含文本框)中的内容。实际上,此列包含 HTML 页面。当我点击链接按钮时,我想打开这些页面 HTML 解释的新窗口。

目前我只有这个:

<asp: TemplateField HeaderText="Data">
  <ItemTemplate>
    <asp:Label runat="server" ID="Data" Text='<%#Server.HtmlEncode(Convert.ToString(DataBinder.Eval(Container.DataItem,"Data"))) %>' />
  </ItemTemplate>
  <EditTemplate>
    <asp:TextBox runat="server" ID="txtData" Text='<%#Server.HtmlEncode(Convert.ToString(DataBinder.Eval(Container.DataItem,"Data"))) %>' />
  </EditTemplate>
</asp:TemplateField>

有人可以向我解释一下如何进行吗?

【问题讨论】:

    标签: c# asp.net gridview webforms


    【解决方案1】:

    使用

    <asp:LinkButton runat="server" NavigateUrl='<%#Eval("DATA") %>' />
    

    在您的 ItemTemplate 中,而不是 TextBox

    编辑:

    制作你的NavigateURL="javascript:OpenWindow(MY HTML)" // 你可以使用 Eval 将你的 HTML 作为数据绑定的字符串内容。

    Javascript:

    OpenWindow(myHTML)
    {
        newwindow=window.open();
        newdocument=newwindow.document;
        newdocument.write(myHTML);
    }
    

    有关更多信息,请查看此参考:JavaScript Dynamic Document Creation in New Windows

    编辑:

    我的错误:),将NavigateUrl 替换为OnClientClick,这样它就变成了这样:

    <asp:LinkButton ID="LinkButton1" runat="server" Text="Click" OnClientClick="javascript:OpenWindow('<%#Eval("MyFieldName") %>');return false;" /> 
    

    或者不使用 LinkBut​​ton 使用锚标记:

    <a href="javascript:OpenWindow('<%#Eval("MyFieldName") %>');" runat="server" id="myLink" />
    

    【讨论】:

    • 感谢您的回答,但仍然无法正常工作。我澄清一下,我在本专栏中没有 URL,而只有 HTML 内容。我想打开一个解释了这个 HTML 的窗口。
    • 哦,好吧 :) 现在我明白了 :)
    • 感谢您的帮助 Siraj !我将 Javascript 函数放入 site.master 文件,我的 Default.aspx 页面如下所示: 这就是你的意思?
    • 这肯定会成功:) .. 尝试将您的 javascript 放在同一页面 (Default.aspx) 中会更好,因为它不是您需要的全局脚本整个网站
    • 我尝试将脚本放在下面,但我不明白为什么它不起作用:(更多关于如何将 HTML 内容传递到 OpenWindow(MY HTML)?
    【解决方案2】:

    你可以使用。

    使用链接按钮更改文本框代码

    <asp: TemplateField HeaderText="Data">
      <ItemTemplate>
        <asp:Label runat="server" ID="Data" Text='<%#Server.HtmlEncode(Convert.ToString(DataBinder.Eval(Container.DataItem,"Data"))) %>' />
      </ItemTemplate>
      <EditTemplate>
       <asp:LinkButton runat="server" NavigateUrl='YouFolder/<%#Eval("DATA") %>' />/>
      </EditTemplate>
    </asp:TemplateField>
    

    谢谢

    【讨论】:

      【解决方案3】:

      我有类似的问题,我将 html 存储在我的数据库中,并希望在 div 中显示它。这对我有用。

      <itemTemplate>
       <div>
         <%# Server.HtmlDecode( (string)DataBinder.Eval(Container.DataItem, "notes") ) %>
       </div>
      </itemTemplate>
      

      希望这能回答你的问题;)

      【讨论】:

        猜你喜欢
        • 2013-07-09
        • 1970-01-01
        • 2017-10-04
        • 1970-01-01
        • 2013-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-15
        相关资源
        最近更新 更多