>A have a field in one of my database tables that contains text with carriage returns. I need to bind this (read only) to a UI control to show these comments to the user on the page. What control or technique should I use? I tried < asp:TextBox > with a wide width and tall height, but it does honor the carriage returns.
>
Textbox should work. Did you set it's TextMode="MultiLine"? I'd also set ReadOnly="true". It will automatically HTML-encode strings as well.
This is basically just an HTML thing. Normally, CR's are ignored. You can handle this a few different ways in addition to Textbox. One would be to use the Literal control and embed your text inside of <pre> tags. Then the browser will render it as-is. ex.
this.litField.Text = "<pre" + fieldValue + "</pre";
Or, you can just transform some of the text before display by converting the CR's into a <br/> tag and using the literal control. You would want to HTML encode the text first, though.
Ex.
this.litField.Text = Server.HTMLEncode(fieldValue).Replace("\r", "<br/");
I'm sure people have other ways they handle this as well.
>Also, what is the proper data type to make this field in the table? Right now it is a type called "ntext", and I'm not even sure why it is that type. This data was given to me by the customer in Access, and I upsized it into SQL Server. I can change the type however I need to, so what is best for this case?
ntext is SQL's unicode text-type. If it's a multilingual app, that's the correct data type. Actually, the new type should be nvarchar(MAX) since text/ntext is now deprecated.