ASP.NET mobile でテキストボックスをマルチライン
モバイルWebアプリケーションで複数行のテキストボックスを利用。
使い方は省略。
タグを書き換えと、改行の入力を殺すだけ。必要に応じて他の文字に変更してね。
public class MultiLineInput : System.Web.UI.MobileControls.TextBox , IPostBackDataHandler { #RowsとColsプロパティ 略 protected override void OnRender( HtmlTextWriter writer) { writer.WriteBeginTag("textarea"); String renderName; renderName = UniqueID; writer.WriteAttribute("name", renderName); writer.WriteAttribute("cols", Cols.ToString()); writer.WriteAttribute("rows", Rows.ToString()); writer.Write(">"); writer.Write(Text); writer.WriteEndTag("textarea"); if (BreakAfter) writer.Write("<br />"); } bool IPostBackDataHandler.LoadPostData(string postDataKey, NameValueCollection postCollection) { String presentValue = Text.Replace("\n", " "); String postedValue = postCollection[postDataKey]; postedValue = postedValue.Replace("\r\n", " "); postedValue = postedValue.Replace("\n", " "); if (!presentValue.Equals(postedValue)) { Text = postedValue; return true; } return false; } }
※本来のデバイス別動作とかは無視です。
改行があると動かない機種も無視です。
動作確認してません。
改行含む文字列をTextの初期値指定したとたんに、エラーになるので、
ほかの文字に変更しておいて、OnRenderの中で\nに戻してみたり。