忍者ブログ

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

クラス

たとえば、ユーザマスタのアクセスクラス

ユーザマスタに関わる記述の大部分をこのクラスで行う
insert
update
select
エラーチェックなど
PR

GridView DropDown SelectedValueで該当する値がない場合

GridViewにDropDownを設定する。
GridViewには、普通のテーブルの値をバインド
DropDownには、マスタの値をバインド

通常は、DropDownに
<asp:DropDownList SelectedValue='<%# bind("CD") %>'
としてやれば、テーブルの値(CD)を選択して表示してくれる。

ただ、テーブルのCDがマスタのCDに存在しない場合、
エラーが起こる。

そのため、SelectedValue='<%# bind("CD") %>' は記述せず、
.vbで、SelectedValueを指定する。

Gridviewの「RowDataBound」

’グリッドからドロップダウンを探す
If e.Row.FindControl("DropDownList1") IsNot Nothing Then
 
  ddl = DirectCast(e.Row.FindControl("DropDownList1"), DropDownList)
  'ドロップダウンの値に、通常のテーブルのCDがあるか探す
  If ddl.Items.FindByValue(e.Row.DataItem("CD")) IsNot Nothing Then
    'あったら、指定する
    ddl.SelectedValue = e.Row.DataItem("CD")
  End If
End If
 

GridViewとDropDownList Radioボタンでデータソースを変更

ドロップダウン用にラジオボタンの数だけデータソースを作成

Gridの中にドロップダウンをつくっておく
ドロップダウンにバインドしておく

<asp:DropDownList ID="DropDownList2" runat="server" 
                        DataSourceID='<%# chengeDataSource %>'

.vb側で処理させる
   Protected Function chengeDataSource() As String
 
        Dim dataSource As String
 
        If RadioButton1.Checked = True Then
            dataSource = "SqlDataSourceDDL1"
        Else : RadioButton2.Checked = True
            dataSource = "SqlDataSourceDDL2"
        End If
 
        Return dataSource
 
    End Function

GridVewとDropDownListのバインドと更新

[ASP.NET]GridViewコントロールで選択ボックスを表示するには?[2.0、3.0、3.5、C#、VB
http://www.atmarkit.co.jp/fdotnet/dotnettips/816aspgridvwddlist/aspgridvwddlist.html

ListView と DropDownList
http://surferonwww.info/BlogEngine/post/2010/10/31/DropDwonList-in-InsertItemTemplate-of-ListView.aspx

デザインでGridを作る
ドロップダウンにするところを、TemplateFieldに変える
デザインで、Gridのテンプレートの編集を選択し、EditItemを選択する
テキストボックスを削除し、ドロップダウンを作成。
ドロップダウン用のデータソースを作成
表示する値と、使用する値を設定
※この時点で表示は出来ている。Gridとドロップダウンの連結は以下

ドロップダウンのタスクから、DataBindingsの編集を選択
SelectedValueを選択し、右側のカスタムバインドに「Bind("CD")」といった、
Gridのデータソースの値を設定
※この時点で連結までOK。ただ、データを編集して更新しても空白が登録される。

    Private Sub SqlDataSource1_Updating(sender As Object, e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs) Handles SqlDataSource1.Updating
        e.Command.Parameters("@NM").Value = _
            CType(Gridview1.Rows(Gridview1.EditIndex).FindControl("DropDownList1"), DropDownList).SelectedValue
    End Sub

強引に、パラメータに値をセットする
以上。




考え方

考えろ!
ノリとか勢いとか、ふと思い付いたから、とかだと、なんかおかしくなる

自信がないなら確認しまくれ
気が付いた変な動きは、隠さず伝えろ

今、効率が良いではなく、後々効率が良いのを選べ

失敗したらどこがまずかったのか、徹底的に覚えろ
二度と同じミスするな

コーディング

運用上、DBから取得できるのは1件のはず。
→1件以外はエラーとする

SQL文だけのメソッドでも、
具体的になんの値を取得しているのか、
コメントをしっかり書くこと

1行が長すぎる場合、改行して見やすくすること

問題提議

こう言われたから、こう作った。
ではダメ。
→こう作ってみたけど、ここらへんが使いにくいですが、
これで問題ないですか?

伝えてないと、リリース後などに、これは使いにくいから変えてって要望がでる。
無駄な工数が発生する。


画面デザイン含め、仕様が全て合っているわけではない。
言語の特徴や出来ることを踏まえて、仕様を変えることを提案していかないとダメ。

作業の進め方

コーディング開始前に、前もって必要となるメソッド群を洗い出す。
仕様書に書いていないロジックが見つかったら、その部分の仕様を固める。
異常系の処理とか特に。

クラスダイアグラムとか使ってみる

作業中であとから記述するとこなどに、
「TODO:~の処理を記述」のようにTODOを入れておく。
タスク一覧で抽出してくれる

コーディングでも、何をするかリストを作る。
追加の作業があるたびに追加する
これをしておけば、残りの作業が時間把握しやすい
他人に仕事を振りやすい

クラスを考える。
どんなクラスが必要か?
どれを継承させるのか?
継承させるには、同じような処理をするものでまとめる。
メニューとコンテンツは、まったく別物なので、別々の物を継承させるべき
クラスは特定の機能ごとに作る
いろんなことができるクラスは、何か間違ってるハズ

地盤を固める

クラスとは?
抽象的なもの。
設計図のようなもの。
たとえば、車の設計図(クラス)。
これに、車種や色などの情報を与えると(インスタンス化)車が特定できる(オブジェクトになる)


継承と共通関数
継承は似たもの同士で行うもの。
車の設計図とバイクの設計図は別物なので、
継承できない
似たような機能があるからといって、継承しないこと
共通関数とは全くの別物
継承は難しいのであまり使用しない方がいいかも。。。


共通関数
車とバイクにおいて、
アクセル・ブレーキなどは、加速・減速など
似たような機能がある。
これは共通で定義できる可能性がある。

他人の振る舞いから学んだこと

・仕様が固まった後の要望や、仕様変更は、
 文書に残して、都度客先へ伝える

→納品直前、納品後の武器になるから。
 費やした工数なども明記しておくこと


・仕様の不明点などが発生した場合、即座に客先に確認すること

→確認せず、勝手に仕様を決めると、後々、客から「これは言ってたのと違う」とか言われる

カレンダー

04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

カテゴリー

フリーエリア

最新コメント

プロフィール

HN:
No Name Ninja
性別:
非公開

バーコード

ブログ内検索

P R