ASP.Net FormView Editモードでの問題について

このQ&Aのポイント
  • 現在編集中のFormViewで、バインドされているデータの後ろに空白が埋められる状態になっています。
  • 別のページのFormViewではこの問題は発生しておらず、実データのみが表示されています。
  • 検索してもこの問題についての情報は見つからないため、お知恵を拝借したいです。
回答を見る
  • ベストアンサー

ASP.Net FormView Editモードで

お世話になります。 ASP.Net 初心者でございます。 もしかしたら初歩的な質問ではあるかもしれませんが、何卒お許し下さいませ。 現在編集中のFormView を編集モードにして表示させると TextBox にバインドされているデータが実データの後ろに空白で埋められている状態なのですが、なぜこのようになったのかがわかりません。 別のページのFormView での編集モードでは、実データだけが表示されていて、何も問題ないのですが、現在編集しているページのFormView のTextBox だけがこのような状態なのです。 データベースの 長さが 例えば String 10ケタで定義されている場合、 実データが ABC だとすると その後に空白が7ケタで埋められている状態なのです。 検索で ASP.Net FormView TextBox 空白で埋められる などで検索したのですが、該当する情報がないので、こちらで質問させていただきました。 どこかのプロパティを操作したなどは していないと思うのでうが、もし何かお気づきの点がございましたら、ご教授いただければと存じます。 何卒よろしくお願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
  • onos
  • ベストアンサー率81% (127/155)
回答No.1

別のページの編集モードで扱っているデータと現象のでているページで扱っているデータはまったく同一ですか? というのも、データベースの項目の定義の仕方によっては文字を入力した際に後ろに空白が追加される場合があるからです。 まずは、表示しているデータが同じかどうか、異なる場合はテーブル定義が同じかどうかを調べてみることをおすすめします。

kyokotan12
質問者

お礼

onosさん お世話になります。 どうして空白が埋められるのかは 不明ですが、一応解決しました。 FormView のデータソースは 複数のテーブルからなるデータソースで、リードオンリーの為にもうけいたフィールド、LEFT OUTER JOIN がありました。これが原因かと思って単一のテーブルだけのデータソースにしました。そうすると文字列フィールドにあった空白は作成されませんでした。 LEFT OUTER JOIN あたりに原因があるのだと推測できました。 なかなか難しいものですね! データベースの定義を調べてみてとの onosさん のアドバイスで もしかしたらとデータソースを見直し解決できました。 ありがとうございました。 でもなぜ、LEFT OUTER JOINをつけたデータソースだと 実データの後に空白が足されるにかは今だに不明であります。

kyokotan12
質問者

補足

onosさん お世話になっております。 別ページのデータと 問題になっているページは まったく違うテーブルのデータです。空白で埋めてあるのは、SQL Server 2005 文字列型の varChar です。ですので、比べることはできませんが、フィールドの定義を見ても他のテーブルと同じになっていると思います。 ちなみに どういう場合に後ろに空白が追加されるのでしょうか? 空白が追加されるフィールドも、されないフィールドも、列名、データ型、長さ、Nullの許容 これだけしか入力していないので、同じだと思うのですが・・・ 空白を削除するのに、Trim関数とか使うしかないでしょうか? テーブルの定義としては、列名と長さ だけ違くて 他は同じです。 どこかのプロパティを変更するなどして、改善しないでしょうか? 何卒よろしくお願いいたします。

関連するQ&A

  • ASPとavascript

    はじめましてこんにちわ。 ただいまasp.net(vb)で開発をしております。 gridviewにバインドしています。 そこに新たにtextbox,LBLをいれています。 textboxに値が入力されたらjavascript(クライアント側)にてバインドした値*textboxをLBLにjavascriptを使って表示したいのですが方法がわかりません。 どなたか教えていただけないでしょうか??

  • ASP.Net FormViewでの削除について

    大変お世話になっております。 FormView を セッション変数にて該当するデータを表示するようにしております。 そのFormView に削除ボタンを作成して、ボタンのクリックイベントにて下記のようなプログラムを記述しております。     FormView1.DeleteItem()     Session("Number") = ""     Response.Write("<script language='javascript'> { window.close();}</script>") 上記を実行すると削除処理はされ、セッションもクリアされるのですが、その後、そのページを閉じたいのですが、3行目が無視されて、LoadイベントやDataBoundイベントに移ってしまいます。 DeleteItemメソッドでカレントデータを削除してその画面を閉じるには、どうすれば良いのでしょうか? 何か思い違いをしている個所や、ご指摘などございましたら何卒ご教授いただければと存じます。 よろしくお願いいたします。

  • ASP.NET(VB)にてFormViewでの更新についてお尋ねします。

    ASPNETは最近始めたばかりの超初心者ですが、宜しくお願いします。 現在、Microsoft Visual Web Developer 2008(VB)を使用しています。 FormView についてお尋ねいたします。 下記の様な画面構成で FormView を作成したとします。 ≪ItemTemplate≫ ################################### # 氏名:__________ TEL:__________ # [編集] ################################### ≪EditItemTemplate≫ ####################################### # 氏名:__________|▼| TEL:__________ # [更新] ####################################### 実行させて、[編集]ボタンをクリックした後、編集画面が表示され 氏名を|▼|で選択させた時に TELの内容も同時に変更したいのですが、 現在のところ連動していません。 氏名を変更した際、データべース を見に行き、一致した場合に表示しようかとも思ったんですが何故か 氏名を更新後(氏名_SelectedIndexChanged)に記述してみても反応が ありません・・・ 簡単に氏名を変更したらTELも変わる様な方法が あれば是非とも教えてください。

  • FormViewRowプロパティで値取得

    VWD2005 + ASP.NETでWebページ作成中で行きづまっています。 Webフォーム上に配置したFormView 内を編集し、 EditItemTemprate 内TextBoxの値 (数値の場合と文字の場合がり)取得をVBのコードで取得したいのですが御教授ください。 よろしくお願いいたします。 以下のように行うと 「FormView1.Row.FindControl("TextBox") 」の部分が 型'System.Web.UIControl'の値を'Integer'に変換できません。とエラーになります。 例: Me.TextBox1.Text = CType(FormView1.Row.FindControl("TextBox"), Integer)

  • ASP.NET : FormView内コントロールのプロパティ取得について

    初めてVC#2005 + ASP.NETでWebシステムを作っているのですが、標題の件で行きづまっています。 具体的にいうとWebフォーム上に配置したFormView -> EditItemTemprate 内に配置したTextBoxの TextプロパティやDropDownListのSelectedIndexプロパティをFormViewの外からC#のコードで 取得したい。 分かる方がいらっしゃいましたら御教授ください。 よろしくお願いいたします。

  • ASP.Net GridView TextBoxで

    大変お世話になります。 FormViewにあるGridView を編集状態にした状態で、 Dim Gv As GridView = FormView1.Row.FindControl("GridView1") TextBoxのデータを変更した際に、他のTextBoxの内容を変更したいのですが、 この場合、GridViewのTextBoxのTextChangedイベントを使用しています。 ここで問題なのが、 (1) GridVew の行の Index の取得 (2) TextChangedイベント内での FindControl の記述の仕方 上記のやり方がよくわかりません。 ボタンを使用した場合の Index の取得などはわかるのですが、 GridView1_RowCreated イベントで Dim A As Button = CType(e.Row.FindControl("A"), Button) A.CommandArgument = e.Row.RowIndex.ToString() 上記(1)、(2)はどうしたらよいのかわかりません。 編集状態にあるGridView の Index の取得方法とローカル関数でのFindCotrol メソッドの やり方など、お分かりになる方がいらっしゃいましたら 何卒ご教授いただければと存じます。

  • ACCESS+ASP検索後テキストボックスへ値を表示・編集

    ACCESS+ASP(IIS)で使用しています。 前頁touroku.aspでID、名前、会社名、所属を入力してACCESSのテーブルに保存してあるレコードを、検索フォームkensaku.aspによりIDで検索した、データの結果を結果ページkekka.aspのテキストボックスで表示し編集したい 検索することまでは、できたのに結果ページでテキストボックスに表示し編集できない

  • ASP.Net DataBound時Style変更

    お世話になります。 ASP.Net 初心者ではありますが、こちらで多岐に渡り質問させていただき、日々成長できていると思っております。この場をお借りして感謝申し上げます。 なるべく自身で解決したいと思うのですが、また壁に当たっております。 FormViewにてある伝票の詳細を表示しております。 HTML上に Style143 の属性を持つタグがるのですが、このタグの中にあるデータバインドされた Label の値がマイナスの場合に Style143 の背景色を赤にしたいのですが、やり方がわかりません。 Labelの背景色を変えて試してみたのですが、余白の関係上、見た目が悪いので、タグ自体の属性である Style143 の背景色を変えたいのです。 上級者様には容易な事ではあると思いますが、何卒ご教授いただければと存じます。 よろしくお願い申し上げます。

  • FormView から別画面でカレンダーを開き、値を前の画面に戻したい

    以下の環境で開発を行っております。 Windows XP(Professional) Visual Web Developer 2008 Express Edition Internet Explorer 8 【質問】 FormView ではなくて Form から別画面でカレンダーを開き値を戻す事はできたのですが、FormView を使った画面からデータを戻すことができず、エラーがでてしまいます。構文が間違っているのでしょうか? 【test.aspx】 <html> <head> <title>日付テスト</title> <script language="javascript" type="text/javascript"> function calendarPicker(strField) { window.open('DatePicker.aspx?field=' + strField, 'calendarPopup', 'width=250,height=220,resizable=yes'); } </script> </head> <body> <form id="Form1" method="post" runat="server"> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStrings %>"> </asp:SqlDataSource> <asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1"> <ItemTemplate> 日付:<asp:TextBox ID="TextBox" runat="server" style="text-align: center"></asp:TextBox> <a href="javascript:;" onclick="calendarPicker('Form1.FormView1.TextBox');">▼</a><br /> </ItemTemplate> </asp:FormView> </form> </body> </html> 【DatePicker.aspx.vb】 Private Sub Calendar1_DayRender(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DayRenderEventArgs) Handles Calendar1.DayRender e.Cell.Controls.Clear() Dim Link As System.Web.UI.HtmlControls.HtmlGenericControl Link = New System.Web.UI.HtmlControls.HtmlGenericControl Link.TagName = "a" Link.InnerText = e.Day.DayNumberText Link.Attributes.Add("href", String.Format("JavaScript:window.opener.document.{0}.value = '{1:d}'; window.close();", Request.QueryString("field"), e.Day.Date)) If e.Day.IsSelected Then Link.Attributes.Add("style",Me.Calendar1.SelectedDayStyle.ToString()) End If e.Cell.Controls.Add(Link) End Sub

  • ASP.NET GridView につきまして

    ASP.NET GridView につきまして質問があります。 よろしくお願いいたします。 SQL Server にあるデータを使用して、GridView を作成しております。 あるBit型フィールドがあるのですが、NULLの場合は 無、1の場合には 有 と GridView内に表示させたいのですが、GridViewの項目はバインドされているフィールドしか表示させることができないのでしょうか? 非連結の項目を追加して どこかのプロパティに =IIf([CheckChoku]=True,"有","無") を記述すれば、表示できるような方法を探しています。 すみません ASP.Net は始めたばかりなので、VB や Access のような操作が応用できればなと思っております。もしくは SQL のデータソースを作成するときに上記を埋め込んでソースにしないと実現できないものでしょうか? ご教授いただければ 大変助かります。 よろしくお願いいたします。