列表框返回 SelectedIndexChanged 事件上的空字符串
本文关键字:字符串 事件 返回 SelectedIndexChanged 列表 | 更新日期: 2023-09-27 18:35:02
上述错误发生在列表框上的 SelectedIndexChanged 单击事件上。
在调试中,返回的值是",但是当您查看网页源代码时,肯定有值。
这是我的列表框:
<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,列表框将返回值。顺便说一句,我需要重新填充列表,所以我需要 databind 背后的代码(当然,除非有更好的方法(
那么,为什么列表框选择的值返回空字符串呢?任何帮助将不胜感激。
您具有属性 AutoPostBack = "True" 这将更改每个选定索引的回发。因此,在转到"选定的索引更改"事件之前,它必须点击绑定列表框的页面加载。因此,当它命中页面加载时,所选索引将更改为默认项目。因此,请尝试以下代码。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Bind your listbox here
}
}