0

詳細ビューのフィールドにアクセスしてラベルに表示しようとしています。フィールドをtempldateフィールドに変換したことに注意してください。出力ラベルに何も表示されません。ここで何が間違っていますか?ありがとう

if (this.DetailsView1.DefaultMode == DetailsViewMode.Edit) 
        { 

            { 
                TextBox dv = this.DetailsView1.FindControl("ID") as TextBox; 
                // dv.Text = "RCA Assigned"; 
                Session["MySessionVar"] = dv; 
                OutputLabel.Text = (string)Session["MySessionVar"]; 
            } 
        } 

        else 
        { 
            TextBox dv = this.DetailsView1.FindControl("ID") as TextBox; 
            OutputLabel.Text = (string)Session["MySessionVar"]; 
        }
4

1 に答える 1

0

ここにはいくつかの問題があります。

TextBox (dv) 全体をセッションに格納しています。次に、それを文字列にキャストしようとしています。

代わりに、次のことを行う必要があります。

Session["MySessionVar"] = dv.Text;

つまり、文字列は最初からセッションに格納されます (オブジェクトとしてボックス化されるため、再度取得するときに文字列にキャストする必要があります)。しかし、なぜセッションを使用しているのですか? TextBox のコンテンツを OutputLabel に表示するだけの場合は、次のようにします。

TextBox dv = this.DetailsView1.FindControl("ID") as TextBox;     
OutputLabel.Text = dv.Text;

ただし、ラベルのコンテンツは、ページが Web サーバーによって提供されるたびにのみ入力されます。TextBox のコンテンツを編集するときに Label のコンテンツを動的に変更したい場合は、何らかの JavaScript のクライアント側ソリューションを検討する必要があります。

ここで何を達成しようとしているかによって異なります。質問の背景の詳細​​を教えてください。

于 2012-11-01T15:19:02.780 に答える