質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

4279閲覧

ASP.NETでのテーブルの各セルの文字数制限がかけられません

YAMI

総合スコア8

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2015/08/04 03:19

ASP.NET(C#、Webフォーム)について質問です。
現在テーブルを作成してデータはXMLから読み込んでおります。
その際に各セルに文字数制限をかけたいのですが(文字数が超えていた場合それ以降の文字を表示しないなど)、asp側でMaxLengthなど効果がなく
どのようにすればいいのか困っております。
以下要点のソースコードになります。

ASP側

HTML

1<asp:Table ID="Tbl_memberlist" runat="server" style="border-collapse:collapse;table-layout:fixed;"> 2 <asp:TableHeaderRow style=" background-color:chartreuse;"> 3 <asp:TableHeaderCell ID="Header_No" Text="No" Width="80"runat="server" style="border: 1px solid;"></asp:TableHeaderCell> 4 <asp:TableHeaderCell ID="Header_Name" Text="Name" Width="150"runat="server" style="border: 1px solid"></asp:TableHeaderCell> 5 <asp:TableHeaderCell ID="Header_Add" Text="Address" Width="150"runat="server" style="border: 1px solid"></asp:TableHeaderCell> 6 <asp:TableHeaderCell ID="Header_Skill" Text="Skill" Width="150"runat="server" style="border: 1px solid"></asp:TableHeaderCell> 7 <asp:TableHeaderCell ID="Header_Status" Text="Status" Width="150"runat="server" style="border: 1px solid"></asp:TableHeaderCell> 8 </asp:TableHeaderRow> 9 </asp:Table>

C#側

C#

1//プルダウンメニューにて選択した項目別に表示するデータを切り替え、ボタンを押して実行 2protected void Btn_Click(object sender, EventArgs e) 3 { 4 string filePath = "XMLファイルがあるフォルダのパス"; 5 string xmlPath = string.Empty; 6 7 switch(Ddl_List.SelectedValue) { 8 case "1": 9 //デフォルトで選択している空白の状態 10 return; 11 case "2": 12 xmlPath = Path.Combine(filePath,"1.xml"); 13 break; 14 case "3": 15 xmlPath = Path.Combine(filePath,"2.xml"); 16 break; 17 case "4": 18 xmlPath = Path.Combine(filePath, "3.xml"); 19 break; 20 case "5": 21 xmlPath = Path.Combine(filePath, "4.xml"); 22 break; 23 default: 24 return; 25 } 26 //XmlRender生成 27 XmlReader reader = null; 28 29 30 try { 31 //XML読み込み 32 reader = new XmlTextReader(xmlPath); 33 34 int no = 0; 35 string name = string.Empty; 36 string add = string.Empty; 37 string skill = string.Empty; 38 string status = string.Empty; 39 40 while(reader.Read()) { 41 if(reader.NodeType == XmlNodeType.Element) { 42 43 switch(reader.LocalName) { 44 case "no": 45 no = int.Parse(reader.ReadString()); 46 break; 47 case "name": 48 name = reader.ReadString(); 49 break; 50 case "add": 51 add = reader.ReadString(); 52 break; 53 case "skill": 54 skill = reader.ReadString(); 55 break; 56 case "status": 57 status = reader.ReadString(); 58 59 //一覧セット 60 //下に書いてある関数です。 61 setList(no, name, add, skill, status); 62 63 //初期化 64 no = 0; 65 name = string.Empty; 66 add = string.Empty; 67 skill = string.Empty; 68 status = string.Empty; 69 break; 70 default: 71 break; 72 } 73 } 74 } 75 } 76 77 catch(Exception ex) { 78 //lbl_Errorは画面にエラー表示させるラベルです。 79 lbl_Error.Text = "データ取得に失敗しました。"; 80 lbl_Error.Visible = true; 81 } 82 finally { 83 reader.Close(); 84 85 } 86 } 87 private void setList(int no, string name, string add, string skill, string status) { 88 // テーブル(行)オブジェクト 89 TableRow row = new TableRow(); 90 91 // テーブル(セル)オブジェクト 92 TableCell cell = new TableCell(); 93 94 string[] IdName = { "lbl_No", "lbl_Name", "lbl_Add", "lbl_Skill", "lbl_Status" }; 95 string[] Text = { no.ToString(), name, add, skill, status }; 96 97 for (int i = 0; i < IdName.Length; i++) 98 { 99 // セルにNoのデータセット 100 cell.ID = IdName[i]; 101 cell.Text = Text[i]; 102 cell.BorderStyle = BorderStyle.Solid; 103 cell.BorderWidth = 1; 104 if(cell.ID == "lbl_No") 105 cell.HorizontalAlign = HorizontalAlign.Right; 106 else 107 cell.HorizontalAlign = HorizontalAlign.Center; 108 // 行にセルを追加 109 row.Cells.Add(cell); 110 // セルを再生成 111 cell = new TableCell(); 112 } 113 Tbl_memberlist.Rows.Add(row); 114 } 115 } 116}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

asp.netは使ったことがないのですが、バリデーション(Validation)、正規表現(RegularExpression)で調べると、いろいろ分かるのではないかと思います。

・How To: ASP.NET への入力を制約するために正規表現を使用する方法
・TextBox: Minimum and Maximum Character Length Validation using ASP.Net RegularExpression Validators

ご参考までに。

投稿2015/08/04 04:23

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAMI

2015/08/04 05:03

回答ありがとうございます。 検証の件も考えたのですが、直接値を制限したいということで正規表現ではできない状態でした。 ソースコードを見直したら name = name.Substring(0, (name.Length <= 10 ? name.Length : 10)); というやり方を思いつき、解決できましたので報告させていただきました。 ありがとうございました!
退会済みユーザー

退会済みユーザー

2015/08/04 05:23

バリデーションは入力される値に一定の制限を設けるフィルタ処理なので、最終的に入力値をそのまま保存しない場合でも、可能なら使う事をお勧めします。 入力後の処理が複雑怪奇にならずに済みます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問