上記のエラーは、リストボックスの SelectedIndexChanged クリック イベントで発生します。
デバッグでは返される値は "" ですが、Web ページのソース コードを見ると、間違いなく値があります。
これが私のリストボックスです:
<asp:ListBox ID="lstBxMyList" runat="server" CssClass="binorderlst1"
DataTextField="myName"
DataValueField="myID"
OnSelectedIndexChanged ="lstBxMyList_SelectedIndexChanged"
AutoPostBack="true" Rows="10">
</asp:ListBox>
イベントは次のとおりです。
protected void lstBxMyList_SelectedIndexChanged(object sender, EventArgs e)
{
myID = Convert.ToInt32(lstBxSiteList.SelectedValue.ToString());
... rest of code
}
完全を期すために、データバインディングは次のとおりです。
private void BindLstBxMyList(int myOtherID)
{
DataTable dt = new DataTable();
SqlConnection conn;
SqlCommand comm;
using (conn = new SqlConnection(aSHconns.aconn))
{
comm = new SqlCommand("myStoredProc", conn);
comm.CommandType = CommandType.StoredProcedure;
comm.Parameters.Add(new SqlParameter("@myOtherID", SqlDbType.Int));
comm.Parameters["@myOtherID"].Value = myOtherID;
SqlDataAdapter sqlDa = new SqlDataAdapter(comm);
try
{
conn.Open();
sqlDa.Fill(dt);
if (dt.Rows.Count > 0)
{
lstBxMyList.DataSource = dt;
lstBxMyList.DataTextField = "myName";
lstBxMyList.DataValueField = "myID";
lstBxMyList.DataBind();
}
}
finally
{
conn.Close();
}
}
}
SqlDataSource に戻ると、リストボックスは値を返します。Btリストを再作成する必要があるため、データバインドの背後にあるコードが必要です(もちろん、より良い方法がない限り)
では、リストボックスの選択された値が空の文字列を返すのはなぜですか? どんな助けでもありがたく受け取られます。