0

Let say i have a function like below, which returns option tag as a string.

 public static string writeDropDownOptionHTML(string tablename, string id_col, string value_col)
        {
            StringWriter stringwriter = new StringWriter();
            HtmlTextWriter writer = new HtmlTextWriter(stringwriter);
            DataTable dt1 = BAL.setDropDown(tablename, id_col, value_col);
            if (dt1.Rows.Count > 0)
            {
                foreach (DataRow row in dt1.Rows)
                {
                    writer.AddAttribute(HtmlTextWriterAttribute.Value, row[0].ToString());
                    writer.RenderBeginTag(HtmlTextWriterTag.Option);

                    writer.Write(row[1].ToString());
                    writer.RenderEndTag();
                }
            }

            return stringwriter.ToString();
        }

now i have another function like below

public static string writeWalkReverseTableData(DataTable dt1)
        {
            StringWriter stringwriter = new StringWriter();
            HtmlTextWriter writer = new HtmlTextWriter(stringwriter);

            if (dt1.Rows.Count > 0)
            {
                foreach (DataRow row in dt1.Rows)
                {

                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                    writer.RenderBeginTag(HtmlTextWriterTag.Td);
                    writer.RenderBeginTag(HtmlTextWriterTag.Select);
                    // now i want to call  writeDropDownOptionHTML which will return option html code
                    // writer += writeDropDownOptionHTML("xyz","abc","def"); 
                    writer.RenderEndTag();
                    writer.RenderEndTag();
                    writer.RenderEndTag();
                }
            }
            return stringwriter.ToString();
        }

enter image description here

how to append string in a HtmlTextWriter?

MD TAHMID HOSSAIN
  • 1,581
  • 7
  • 29
  • 54

2 Answers2

1

I'm not too familiar using the HtmlTextWriter but according to msdn you should be able to do

writer.Write(writeDropDownOptionHTML("xyz","abc","def"));
Kevin
  • 2,752
  • 1
  • 24
  • 46
1

I'd pass writer from writeWalkReverseTableData to writeDropDownOptionHTML as a parameter, like this:

    public static void writeDropDownOptionHTML(HtmlTextWriter writer, string tablename, string id_col, string value_col)
            {
                DataTable dt1 = BAL.setDropDown(tablename, id_col, value_col);
                if (dt1.Rows.Count > 0)
                {
                    foreach (DataRow row in dt1.Rows)
                    {
                        writer.AddAttribute(HtmlTextWriterAttribute.Value, row[0].ToString());
                        writer.RenderBeginTag(HtmlTextWriterTag.Option);

                        writer.Write(row[1].ToString());
                        writer.RenderEndTag();
                    }
                }
            }

public static string writeWalkReverseTableData(DataTable dt1)
        {
            StringWriter stringwriter = new StringWriter();
            HtmlTextWriter writer = new HtmlTextWriter(stringwriter);

            if (dt1.Rows.Count > 0)
            {
                foreach (DataRow row in dt1.Rows)
                {

                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                    writer.RenderBeginTag(HtmlTextWriterTag.Td);
                    writer.RenderBeginTag(HtmlTextWriterTag.Select);
                    writeDropDownOptionHTML(writer, "xyz","abc","def"); 
                    writer.RenderEndTag();
                    writer.RenderEndTag();
                    writer.RenderEndTag();
                }
            }
            return stringwriter.ToString();
        }
AlexS
  • 136
  • 4
  • This is how I would go about it as well, rather than injecting html from another writer. But for this to work you would have to pass it the reference of the writer... public static void writeDropDownOptionHTML(ref HtmlTextWriter writer, string tablename, string id_col, string value_col) and then call it via writeDropDownOptionHTML(ref writer, "xyz","abc","def"); – Kevin Jan 19 '14 at 17:04