首页 > 解决方案 > 在 ASP.Net C# 中的 CKEditor 中粘贴图像

问题描述

我在我的项目 ASP NET C# 上使用CKEditor插件

在我的代码中使用CKEditortxsezi还可以通过使用复制/粘贴在文本框图像上插入来修改 gridview 的行。

图像复制/粘贴工作正常。

问题是当我在文本编辑器txsezi上复制图像并粘贴时gridview,并保存我在标签lbsezi中返回的行gridview

在此处输入图像描述

我的问题在这里......在这种情况下,标签中的返回lbsezi是正确的

<asp:Label ID="lbsezi" runat="server"
    Text='<%# HttpUtility.HtmlDecode(Eval("contents").ToString()) %>'></asp:Label>

相反,如果使用SpliceTextfor 打破字符串

<asp:Label ID="lbsezi" runat="server"
    Text='<%# HttpUtility.HtmlDecode(SpliceText(Eval("contents").ToString(),10)) %>'></asp:Label>

标签里的returnlbsezi是错误的...

但是我需要断开字符串以防止它太长...

如何解决这个问题?

我的代码如下

.aspx

<script src="Scripts/ckeditor/ckeditor.js"></script>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowEditing="OnRowEditing">
    <Columns>
        <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="150" />
        <asp:BoundField DataField="Country" HeaderText="Country" ItemStyle-Width="150" />
        <asp:TemplateField HeaderText="Text"
            ItemStyle-HorizontalAlign="Left">
            <ItemTemplate>
                <asp:Label ID="lbsezi" runat="server"
                    Text='<%# HttpUtility.HtmlDecode(Eval("contents").ToString()) %>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="txsezi" runat="server" TextMode="MultiLine"
                    Text='<%# HttpUtility.HtmlDecode(Eval("contents").ToString()) %>'
                    CssClass="ckeditor" CausesValidation="true"></asp:TextBox>
            </EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:LinkButton Text="Edit" runat="server" CommandName="Edit" />
            </ItemTemplate>
            <EditItemTemplate>
                <asp:LinkButton Text="Update" runat="server" OnClick="OnUpdate" />
                <asp:LinkButton Text="Cancel" runat="server" OnClick="OnCancel" />
            </EditItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

。CS

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        BindGrid();
    }
}
 
private void BindGrid()
{
    DataTable dt = new DataTable();
    dt.Columns.AddRange(new DataColumn[]
    {
        new DataColumn("Id"),
        new DataColumn("Name"),
        new DataColumn("Country"),
        new DataColumn("contents")
    });
    dt.Rows.Add(1, "John Hammond", "United States", "<p><span style='text-align:'>Text row1</span></p><p>&nbsp;</p><p><img alt='1' src='data:image/png;base64,... />");
    GridView1.DataSource = dt;
    GridView1.DataBind();
}
 
protected void OnRowEditing(object sender, GridViewEditEventArgs e)
{
    GridView1.EditIndex = e.NewEditIndex;
    this.BindGrid();
}
 
protected void OnUpdate(object sender, EventArgs e)
{
    GridViewRow row = (sender as LinkButton).NamingContainer as GridViewRow;      
 
    GridView1.EditIndex = -1;
    this.BindGrid();
}
 
protected void OnCancel(object sender, EventArgs e)
{
    GridView1.EditIndex = -1;
    this.BindGrid();
}

public static string SpliceText(string text, int lineLength)
{
    var charCount = 0;
    var lines = text.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)
                    .GroupBy(w => (charCount += w.Length + 1) / lineLength)
                    .Select(g => string.Join(" ", g));

    return String.Join("<br />", lines.ToArray());
}

标签: c#textgridviewlabelckeditor

解决方案


推荐阅读