DropDownListの値が取得できない
投稿者 kojiro  (社会人)
投稿日時
2020/5/23 11:20:19
load出ない箇所に、作成し、成功しました。ネットでは、Initのところへ書くようなことも、ありますが、そのInit作成、利用は・・
投稿者 るきお  (社会人)
投稿日時
2020/5/23 12:42:52
試してみましたが、kojiroさんのプログラムでDropDownListに項目を追加できましたよ。
実際に試したコードを載せます。
WebForm1.aspx.vb
WebForm1.aspx
Initはタイミング的に良くないと思います。
なお、ASP.NET Webフォームは去年リリースされた.NET Framework 4.8版が最後のバージョンですので、今後のことを考えるとASP.NET CoreがWebアプリケーション作成の選択肢になってきます。
とはいえ、ASP.NET Coreでやろうとすると全然プログラムが変わってしまいますので、当面動けばよいというレベルなら乗り換える手間の方がもったいないです。
実際に試したコードを載せます。
WebForm1.aspx.vb
Option Strict Off
Public Class WebForm1
Inherits System.Web.UI.Page
Private syokinen As Integer = 2015
Private syuuryounen As Integer = 2020
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ddList2.Items.Add("ss")
For j = syokinen To syuuryounen
ddList2.Items.Add(j)
Next
End Sub
End Class
WebForm1.aspx
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication27.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<br />
<br />
<br />
<asp:DropDownList ID="ddList2" runat="server">
</asp:DropDownList>
<br />
<br />
<br />
</div>
</form>
</body>
</html>
Initはタイミング的に良くないと思います。
なお、ASP.NET Webフォームは去年リリースされた.NET Framework 4.8版が最後のバージョンですので、今後のことを考えるとASP.NET CoreがWebアプリケーション作成の選択肢になってきます。
とはいえ、ASP.NET Coreでやろうとすると全然プログラムが変わってしまいますので、当面動けばよいというレベルなら乗り換える手間の方がもったいないです。
投稿者 kojiro  (社会人)
投稿日時
2020/5/23 15:04:08
えーと、回答いつもありがとうございます。
ddList2.Items.Clear()
ddList2.Items.Add("選択してください")
For j = syokinen To syuuryounen
ddList2.Items.Add(j)
Next
でddList2.Items.Clear()を最初に入れると、だめなようです。
また、loadは何回か行われるのか、これを入れないと、2回以上のリストが作成されます。
ddList2.Items.Clear()
ddList2.Items.Add("選択してください")
For j = syokinen To syuuryounen
ddList2.Items.Add(j)
Next
でddList2.Items.Clear()を最初に入れると、だめなようです。
また、loadは何回か行われるのか、これを入れないと、2回以上のリストが作成されます。
投稿者 kojiro  (社会人)
投稿日時
2020/5/23 16:12:21
このコードは、他のDDListのchangedのところに、書きます。その方が、整合性もあり、正常動作しますので。ありがとうございました。
投稿者 るきお  (社会人)
投稿日時
2020/5/23 20:02:46
>loadは何回か行われるのか
Webアプリケーションなので、リクエストのたびにLoadが実行されます。
Windowsフォームアプリケーションにたとえると、リクエストされるとexeが起動され、レスポンスを返すとexeが終了する・・・という動作を繰り返しているのに近いです。
ユーザーがはじめてページにアクセスしたときにはIsPostBackプロパティがFalseになっています。
ボタンをクリックするなどするとユーザーは同じページに再度リクエストを送信することになります。これをWebフォームでは「ポストバック」と呼び、このときにリクエストはIsPostBackがTrueです。
つまり、IsPostBackプロパティを使って1回目なのか2回目以降なのかを判断できます。
初期値を設定したい場合、IsPostBackがFalseであるという条件をつけることが多いです。
次の例では2回目以降のアクセスの場合、ポップアップで選択値を表示するようにしています。ButtonのClickイベントでやったほうがわかりやすいですが、サンプルとしての見通しをよくするためLoadに集めてみました。
もし、Webフォームの基本的な考え方に不慣れなようでしたら、Webフォームについて学習する必要がありますが、なかなか大変なのでお勧めしません。学習コストをかけるのであれば、ASP.NET Coreをお勧めします。
Webアプリケーションなので、リクエストのたびにLoadが実行されます。
Windowsフォームアプリケーションにたとえると、リクエストされるとexeが起動され、レスポンスを返すとexeが終了する・・・という動作を繰り返しているのに近いです。
ユーザーがはじめてページにアクセスしたときにはIsPostBackプロパティがFalseになっています。
ボタンをクリックするなどするとユーザーは同じページに再度リクエストを送信することになります。これをWebフォームでは「ポストバック」と呼び、このときにリクエストはIsPostBackがTrueです。
つまり、IsPostBackプロパティを使って1回目なのか2回目以降なのかを判断できます。
初期値を設定したい場合、IsPostBackがFalseであるという条件をつけることが多いです。
次の例では2回目以降のアクセスの場合、ポップアップで選択値を表示するようにしています。ButtonのClickイベントでやったほうがわかりやすいですが、サンプルとしての見通しをよくするためLoadに集めてみました。
Public Class WebForm1
Inherits System.Web.UI.Page
Private syokinen As Integer = 2015
Private syuuryounen As Integer = 2020
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Me.IsPostBack = False Then
'このセッション内ではじめてのリクエストの場合
ddList2.Items.Add("ss")
For j = syokinen To syuuryounen
ddList2.Items.Add(j)
Next
Else
'2回目以降のリクエストの場合、選択されている値をポップアップで表示します。
Dim js As String = "<script>alert(" & ddList2.SelectedValue & ");</script>"
Me.ClientScript.RegisterStartupScript(Me.GetType, "MsgBox", js)
End If
End Sub
End Class
もし、Webフォームの基本的な考え方に不慣れなようでしたら、Webフォームについて学習する必要がありますが、なかなか大変なのでお勧めしません。学習コストをかけるのであれば、ASP.NET Coreをお勧めします。
投稿者 kojiro  (社会人)
投稿日時
2020/5/23 20:27:50
If Me.IsPostBack = False Then
data_input_death_nen()
ddList2.Items.Clear() ''''''これはいりませんね。
ddList2.Items.Add("選択してください")
For i As Integer = syokinen To syuuryounen
ddList2.Items.Add(i)
Next
Else
'2回目以降のリクエストの場合、選択されている値をポップアップで表示します。
Dim js As String = "<script>alert(" & ddList2.SelectedValue & ");</script>"
Me.ClientScript.RegisterStartupScript(Me.GetType, "MsgBox", js)
End If
としまして、言われるように動きます。webをユーザーが訪れた場合のクッキーに、postbackを使っていました。
ありがとうございます。
data_input_death_nen()
ddList2.Items.Clear() ''''''これはいりませんね。
ddList2.Items.Add("選択してください")
For i As Integer = syokinen To syuuryounen
ddList2.Items.Add(i)
Next
Else
'2回目以降のリクエストの場合、選択されている値をポップアップで表示します。
Dim js As String = "<script>alert(" & ddList2.SelectedValue & ");</script>"
Me.ClientScript.RegisterStartupScript(Me.GetType, "MsgBox", js)
End If
としまして、言われるように動きます。webをユーザーが訪れた場合のクッキーに、postbackを使っていました。
ありがとうございます。
値が取得できずに、困っています。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ddList2.Items.Add("ss")
For j = syokinen To syuuryounen
ddList2.Items.Add(j)
Next
End Sub
VS2013とは、違ったのでしょうか?