ASP.Net DropDownList 不明値

このQ&Aのポイント
  • ASP.Net初心者によるDropDownListの不明値問題について
  • 運営上の問題で一部のデータが削除された場合、GridViewで表示するDropDownListのデータには存在しない値があるとエラーが発生します。解決方法はあるのか?
  • ASP.NetのDropDownListで本データに存在し、表示データには存在しない値を事前に取得して追加する方法はあるか?
回答を見る
  • ベストアンサー

ASP.Net DropDownList 不明値

大変お世話になります。 ASP.Net 初心者でございます。 データソースのある GridView の1つの項目が DropDownList になっております。 このDropDownList のデータの元になるテーブルがあるのですが、 運営上の問題で一部のデータを消す事があります。 そうなると、本データ上にはある過去の値が、現在の DropDownList のデータには無い事があるのです。そういうデータを GridView で表示すると、次のような・・・ 【項目一覧に存在しないため、'DropDownList1' に SelectedValue を指定することは無効です】 というエラーになってしまうのですが、何か良い方法はないでしょうか? DropDownList のデータ 1:青森 2:山形 3:岩手 4:NewYork ・・・・・ このデータは既にDropDownList のテーブル上にはありません。 本データの DropDownList 項目のデータ 1:青森 2:山形 3:岩手 -------------------------------------------------- 4:NewYork ・・・・・ このデータが出てくるとエラーになります。(このデータは本データにある) -------------------------------------------------- こういう場合は、本データにあって、DropDownList データには無いデータをあらかじめ取得して、 AppendDataBoundItems か何かで、追加する必要があるのでしょうか? 何卒よろしくお願いいたします。

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

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

過去のデータということで、変更されることがないのであれば、データ内に登録時の項目名称を 保持しておいて、過去のデータの参照時はデータ内の項目名称を表示するようにするとか。。。 どのような対策をとるにしても、データ構造のありかたから見直す必要があると思います。

kyokotan12
質問者

お礼

onosさん お世話になります。 やはりこの問題はプロパティなどの設定を変更するぐらいでは解決できないのですね!Accessなどでは空白になるのは、そういう意味ではすぐれているのですね! Access 等からASP.Net に作り変える等の作業ってとても大変だと、この部分でも改めて思いました。 本データと DropDownList のデータとの不一致クエリーから不足データをAppendDataBoundItems で追加する形になるんでしょうか ご意見ありがとうございました。

関連するQ&A

  • DropDownList に指定した値を表示したい

    <開発環境>asp.net A画面のgridviewで指定されたkeyの詳細情報をB画面のgridviewで表示しています。 B画面ではgridviewのTemplateFieldにDropDownListを作成しています。 DropDownListはSqlDataSourceをバインドさせているのですが、A画面でデータを選択し 修正ボタンを押下した時にB画面のDropDownListに初期表示する方法がわかりません。 どのようにすれば表示できるのでしょうか? ちなみにA画面でKBNNAMEが"愛知県"だとB画面で"愛知県"と表示したいです。 -------------------------------------------------------------------------------- <asp:GridView ID="grdList" CssClass="list" runat="server" AutoGenerateColumns="False" DataSourceID="sqldsList"> <Columns> <ItemTemplate> <asp:DropDownList CssClass="cnbstr" ID="cnbBB_KBN" runat="server" DataSourceID="sqldscnb1" DataTextField="KBNNAME" DataValueField="KBNORDER" AutoPostBack="True"></asp:DropDownList> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> -------------------------------------------------------------------------------- <asp:SqlDataSource ID="sqldscnb1" runat="server" ConnectionString="<%$ ConnectionStrings:InformationUseConnectionString %>" SelectCommand="SELECT KBNORDER, KBNNAME FROM table1 WHERE (NO = @NO) AND (ITEMNO = @ITEMNO) ORDER BY KBNORDER" DeleteCommandType="StoredProcedure"> <SelectParameters> <asp:SessionParameter Name="NO" SessionField="BBList_NO" Size="2" Type="String" /> <asp:Parameter DefaultValue="01" Name="ITEMNO" Size="2" Type="String" /> </SelectParameters> </asp:SqlDataSource>

  • FormView内に設置したDropDownList1を選択すると同テ

    FormView内に設置したDropDownList1を選択すると同テーブルの他項目を表示したい ASPの初心者です。VisualStadioDeveloper2008(VB)とSQLServer2008の組み合わせで 質問です。 FormView内に設置したDropDownList1を選択すると同テーブルの他項目を表示されるようにしたいです。 また、EditItemTempleteでもDropDownList1を選択すると同テーブル内容を確認できるようにしたいと思ってます。 以下は例です。 例) テーブルA 社員ID,社員名、社員カナ、社員携帯番号 sqldatasouce1にテーブルAをSELECT * FROM [テーブルA]としています。 また社員名をDropDownList1で選択できるようにしています。(下記はEditItemTemplete) <asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True" DataSourceID="SqlDataSource1" DataTextField="社員名" DataValueField="社員ID" SelectedValue='<%# Bind("社員ID") %>' AutoPostBack="True"></asp:DropDownList> FormView内のDropDownList1の社員名を選択すると他ラベルにて社員カナ、社員携帯などが表示されるようにしたいです。 更新時に、社員名を選択すれば、他情報が確認できるようにしたいです。(テーブルAは他でメンテする仕様です) GOOGLE等で調べてみましたが、DROPDOWNLIST同士を連携する記事は見つけることはできましたが、上記にような記事を探すことができませんでした。(簡単すぎて書いてないだけでしょうか、、?) 以上の点 教えていただけますでしょうか?

  • DropDownList

    前提: ASP.NET Visual C# DropDownListのリストに文字列を配列で読み込みたいのですが、エラー(無効な引数がいくつか含まれています。)が出てしまい私の頭では限界です。どうかご教授ください。 (例) string[] Gengou = { "明治","大正", "昭和", "平成"}; DropDownList1.Items.AddRange(Gengou);

  • DetailsView内で、DropDownListを2つ配置して連動

    DetailsView内で、DropDownListを2つ配置して連動させる方法を教えてください。 お世話になります。全くの初心者です。(VisualStudio2005 ASP.NET2.0 ) 質問の仕方も変かもしれませんがご了承ください。 DetailsView内で、DropDownListを2つ配置して,1つ目のDropDownListの項目を選択すると,2つ目のDropDownListで項目が絞られるというのをしたく思っています。 ネットで検索してみましたが、どれもこれも初心者の私には説明が難しすぎて何を書いてあるのかが理解できません。 そんな中で以下のサイトは初心者にもわかりやすく書かれていたので参考にさせて頂いたところ、新規登録はうまく動作するようになったのですが、編集の際にはコードの記述が必要となり作業がとまってしまいました。 http://dotnetfan.org/blogs/dotnetfanblog/articles/737.aspx 記載が必要なコードは以下です。 ネット上にあったコード変換ツールを利用してVBに読み替えてみましたが「型'DataRowView'が定義されていません。」というエラーメッセージが出てしまいます。 何をどうすればいいのかわかりません。 どなたかご教授下さいますようよろしくお願いいたします。 ▼参考サイトでのコード ----------------------------------------------------------------- protected void DetailsView1_DataBound(object sender, EventArgs e) { if (DetailsView1.CurrentMode == DetailsViewMode.Edit) { ((DropDownList)DetailsView1.FindControl("kaList")).SelectedValue = ((DataRowView)DetailsView1.DataItem).Row["kaID"].ToString(); } } ----------------------------------------------------------------- ▼C#⇒VB ----------------------------------------------------------------- Protected Sub DetailsView1_DataBound(sender As Object, e As EventArgs) If DetailsView1.CurrentMode = DetailsViewMode.Edit Then DirectCast(DetailsView1.FindControl("kaList"), DropDownList).SelectedValue = DirectCast(DetailsView1.DataItem, DataRowView).Row("kaID").ToString() End If End Sub -----------------------------------------------------------------

  • ASP.NET GridView につきまして

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

  • ASP.Net テーブルのセル内を上揃えにしたい

    大変お世話になっております。 下記のように、テーブルのセルを2列にして、左右のセルにそれぞれ、GridView を配置しております。 こうすると、どちらかにデータが偏って多く表示されると、反対側のセルのGridView がセルの縦方向のセンターに寄ってしまいます。両方のGridView をデータがいくら入ってもそれぞれのセルの縦方向の上揃えにしたいのですが、どのようにすればよろしいでしょうか? 何卒よろしくお願いいたします。     <table align="center" cellspacing="1" class="style2">       <tr>         <td>           <asp:GridView ID="GridView1" runat="server">           </asp:GridView>         </td>         <td>           <asp:GridView ID="GridView2" runat="server">           <asp:GridView>         </td>       </tr>     </table>

  • ASP.NET GridView の二列表示

    ASP.NET GridView につきまして質問があります。 よろしくお願いいたします。 SQL Server にあるデータを使用して、GridView を作成しております。 普通にGridViewを作成すると すべて横一列で表示されてしまいます。 例えば項目列が沢山あると、画面を横スクロールしなくてはすべてが見えなくなってしまいます。 なるべく1画面ですべてを見渡せるようにしたいのですが、そのためには GridView での1データを2列表示にできればよいのではないかと思うのですが、 2列表示にできるのでしょうか? ご教授いただければ 大変助かります。 よろしくお願いいたします。

  • GridViewで複数のDropDownListを連携表示しようとして

    GridViewで複数のDropDownListを連携表示しようとしています。 操作全般はソースコード(*.aspx.cs)から行い、動的な処理を行えるようにしたいのですが、 DropDownList同士のバインドのやり方が分からなくて、困っています。 具体的には、ListAのデータ一覧から、ListBのデータ一覧を表示するといった処理になります。 また、GridView上でのDropDownListの描画は、ライブラリにメソッドを組み込み、そこから呼び出しています。 ライブラリの宣言文は以下の通りです。 /// <summary> /// 子コントロールとテンプレートが属する Control オブジェクトを定義します。 /// </summary> /// <param name="container"></param> public void InstantiateIn(System.Web.UI.Control container) { System.Web.UI.WebControls.DropDownList wddlFrame = new System.Web.UI.WebControls.DropDownList(); wddlFrame.AutoPostBack = false; wddlFrame.CausesValidation = false; wddlFrame.ID = _IDname; wddlFrame.EnableViewState = true; wddlFrame.DataBinding += new EventHandler(wddlFrame_DataBinding); wddlFrame.Style.Add("width", this._listWidth.ToString() + "px"); container.Controls.Add(wddlFrame); } /// <summary> /// コントロールがデータソースに連結すると発生します。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void wddlFrame_DataBinding(object sender, EventArgs e) { System.Web.UI.WebControls.DropDownList wddlFrame = (System.Web.UI.WebControls.DropDownList)sender; GridViewRow container = (GridViewRow)wddlFrame.NamingContainer; if (this._listItems != null) { wddlFrame.Items.AddRange(this._listItems); } } ASPを弄るのは初めてで、また既存のデータをカスタマイズしているだけの為、 知らずに使っている部分も多くあり、完全に手詰まり状態となっています。 分かる方がおられましたらご教授お願いします。 上記ソースから察せられるかと思いますが、使用している言語はC#になります。

  • SqlDataSource1のドロップダウンリストにページロード時に値

    SqlDataSource1のドロップダウンリストにページロード時に値をいれたいのですが どのようにしたらいいのでしょうか? SqlDataSource にDropDownList1と同じ内容のデータベース 1 りんご 2 みかん 3 ぶどう でページロード時3を指定しているようにしたいのですが 下記ではDropDownList1はできるのですがSqlDataSourceを使っているDropDownList2 では 項目一覧に存在しないため、'DropDownList2' に SelectedValue を指定することは無効です。 パラメータ名: value というエラーがになってしまいます。 どうしたらできるでしょうか? <%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) DropDownList1.Text = "3" DropDownList2.Text = "3" End Sub </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>無題のページ</title> </head> <body> <form id="form1" runat="server"> <div> <asp:DropDownList ID="DropDownList1" runat="server"> <asp:ListItem>りんご</asp:ListItem> <asp:ListItem>みかん</asp:ListItem> <asp:ListItem>ぶどう</asp:ListItem> </asp:DropDownList> <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="SqlDataSource1" DataTextField="MyLike" DataValueField="NO"> </asp:DropDownList> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>" SelectCommand="SELECT [NO], [MyLike] FROM [MyLike]"></asp:SqlDataSource> </div> </form> </body> </html>

  • ASP.NET:複数結合テーブルのデータ変更方法について

    ASP.NET:複数結合テーブルのデータ変更方法について こんにちは。 現在Visual Studio2008(ASP.NET、ADO.NET) +SQL Server2005 Stdの環境でデータベースを参照したWebアプリケーションを作成しています。 GridViewを使い、データベースの内容を表示し、修正や追加、削除を行いたいと思っています。 (SQLのUpdate,Insert,Deleteに該当) 主キーが設定された単独のテーブルに対しては、GridView内のデータソースでデータベースを選び、 該当のテーブルを選択。その後「INSERT,UPDATEおよびDELETEステートメントの作成」オプションを選ぶことでこれらの変更方法が簡単に実装できるのを確認しております。 しかし、主キー外部キーの関係を持つ2つ以上のテーブルを結合したものに関してこれらの変更を行う場合は通常どのようにするのでしょうか。 何かヒントになるキーワードや参考になるコードを教えていただけないでしょうか? 単独のテーブルの時と同じく、結合したテーブルデータ(ビューに該当)をGridViewに表示し、そのGridView上で変更を行いたいと思っています。 SQL Server側でこれらのテーブルを結合したViewを作成し、これを選ぶことでGridViewに表示する事が可能なのは確認したのですが、やはり「INSERT,UPDATEおよびDELETEステートメントの作成」オプションは選択できませんでした。 以上よろしくお願いいたします。

専門家に質問してみよう