gpt4 book ai didi

c# - 列表框在 SelectedIndexChanged 事件上返回空字符串

转载 作者:行者123 更新时间:2023-11-30 14:36:18 24 4
gpt4 key购买 nike

上述错误发生在列表框的 SelectedIndexChanged 单击事件上。

debug返回的值是"",但是看网页源码肯定有值。

这是我的列表框:

<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
}

为了完整性,这里是数据绑定(bind):

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 我需要重新填充列表,所以我需要数据绑定(bind)背后的代码(当然除非有更好的方法)

那么为什么列表框选择的值返回一个空字符串呢?我们将不胜感激。

最佳答案

您有属性 AutoPostBack = "True"这将对每个选定的索引进行回发更改。因此,在转到 Selected index changed 事件之前,它必须在您绑定(bind)列表框的位置点击页面加载。因此,当它命中页面加载时,所选索引将更改为默认项。因此,请尝试以下代码。

 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Bind your listbox here
}
}

关于c# - 列表框在 SelectedIndexChanged 事件上返回空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10723198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com