views:

24

answers:

1

I have used a ckeditor in which user can submit data to the database in styles but when the data is populated in the datagrid then also it comes with same styles in IE but I want it to be in plain text when get populated. the function for populating the data is as follows:

protected void LoadQA(int intQuestionId)
{
    string strSelectQuery = "SELECT TITLE, DESCRIPTION, ANSWER, FK_OWNER_ID, CREATED_ON FROM M_QA WHERE PK_ID = "
                          + intQuestionId + " AND IS_ACTIVE = 1";

    OleDbConnection connectionSelectQuestion = new OleDbConnection(ConfigurationSettings.AppSettings["SQLConnectionString"]);
    OleDbCommand commandSelectQuestion = new OleDbCommand(strSelectQuery, connectionSelectQuestion);
    OleDbDataReader readerSelectQuestion;
    try
    {
        connectionSelectQuestion.Open();
        readerSelectQuestion = commandSelectQuestion.ExecuteReader();
        if (readerSelectQuestion.Read())
        {
            lblHeader.Text = "View Q&A";
            txtTitle.Text = readerSelectQuestion["TITLE"].ToString();

            if (readerSelectQuestion["TITLE"].ToString().Length > 50)
            {
                ViewState["QA_Title"] = readerSelectQuestion["TITLE"].ToString().Substring(0, 50) + "...";
            }
            else
            {
                ViewState["QA_Title"] = readerSelectQuestion["TITLE"].ToString();
            }

            txtDescription.Text = readerSelectQuestion["DESCRIPTION"].ToString();
            hlnkQuestionBy.Text = clsCommons.SayUserName(readerSelectQuestion["FK_OWNER_ID"].ToString());
            hlnkQuestionBy.NavigateUrl = "AddMember.aspx?id=" + readerSelectQuestion["FK_OWNER_ID"].ToString();
            lblAskedOn.Text = readerSelectQuestion["CREATED_ON"].ToString();

            if (this.Session["UserId"].ToString() != "1")
            {
                btnUpdate.Visible = false;
                txtEditorAnswer.Visible = false;
                divQaDescription.Visible = true;
                divQaDescription.InnerHtml = Server.HtmlDecode(readerSelectQuestion["ANSWER"].ToString());
            }
            else
            {
                txtEditorAnswer.Text = readerSelectQuestion["ANSWER"].ToString();
            }
        }
        else
        {
            lblError.Text = "ERROR WHILE READING QA DATA!";
        }
    }
    catch (Exception ex)
    {
        ExceptionLogger.LogException(ex);
        lblError.Text = ex.Message;
    }
    finally
    {
        if (connectionSelectQuestion != null)
        {
            connectionSelectQuestion.Close();
        }
    }
}

What changes I need to make to get the plain text in the datagrid.

Thanks for ur help..

+1  A: 

here is some sql code that can strip the tags for you.

declare @string varchar(max), --string to remove html from
    @a varchar(max), --holds left part of string after removal
    @b varchar(max) --holds right part of string after removal

set @string='<htlml><head><title></title></head><body>This is the body. <p>This is a paragraph.</p></body></html>'

declare @i bit, --determines if there are any more tags in the string
    @start int, --position of the first < character
    @end int --position of the first > character


set @i='false' --set default value

--set the positions of the first tag
select @start=CHARINDEX('<',@string),
@end=charindex('>',@string)


--only do the loop if there is a tag
if (@start>0 and @end>0) set @i='true'



while (@i='true')
begin

    set @a='' --reset
    set @b='' --reset

    set @a=LEFT(@string,@start-1)
    set @b=RIGHT(@string,len(@string)-@end)

    --select @a, @b

    set @string=@a+@b

    select @start=CHARINDEX('<',@string),
        @end=charindex('>',@string)

    if (@start>0 and @end>0) set @i='true' else set @i='false'


end


select @string

keep in mind, however, that this code does not take into consideration if the text contains a < or >.

DForck42