如何在 asp.net 中保存下拉列表中的选定索引

本文关键字:索引 下拉列表 保存 asp net | 更新日期: 2023-09-27 18:33:33

我希望在单击按钮后保存我选择的索引,以便将该数字存储到我的数据库中。我的下拉列表在下面的评论中。

下拉列表

是使用查询填充的。到目前为止,它的作用是,单击按钮后,即使我想保存另一个索引,它也会存储第一个索引(即 0(。

做了一些研究,到目前为止我无法解决它,希望有人可以帮助我。

下拉列表的代码:-

<asp:DropDownList ID="ddlCategory" runat="server" Height="25px" Width="428px" Font-Size="Large"> </asp:DropDownList> 

这是我填写下拉列表的方法

ClsUtil clsutil = new ClsUtil(); 
DataSet ds = clsutilerias.FillDDL(Category); 
ddlCategory.DataTextField = ds.Tables[0].Columns["Name"].ToString(); 
ddlCategory.DataValueField = ds.Tables[0].Columns["Category_ID"].ToString();
ddlCategory.DataSource = ds.Tables[0]; 
ddlCategory.DataBind(); 

如何在 asp.net 中保存下拉列表中的选定索引

DropDownList 具有属性。您需要正确设置 SelectedIndex、SelectedItem 或 SelectedValue(并且在正确的事件中与执行绑定等时间相关(。

编辑:也许您更新了问题,或者我误解了,但无论哪种方式,现在看来您都不想设置SelectedIndex,也许就像获得SelectedIndex一样多。即便如此,如果您阅读文档并查看链接中提供的示例,您应该有足够的信息来知道该怎么做。

基本上,当数据回发到服务器时,将选择客户端<select>中的<option>元素之一(HTML 代码(。如果您的<asp:DropDownList> AutoPostBack="True"您可以在OnSelectedIndexChanged事件中进行回调,但也有其他方法,有或没有自动回发。(您实际上并不需要视图状态,甚至根本不需要<asp:DropDownList>,但可以通过以适合您的需求或偏好的任何方式提交表单数据来触发 POST,然后在服务器端读取您感兴趣的任何值。

似乎您在检查Page中的IsPostback中找到了解决方案,如果值true,则不要重新填充列表。很好。如果您不需要在每次呈现页面时都进行数据绑定(即使在 POST 之后(,这是一个可行且常见的解决方案。

当然,另一种选择是在执行数据绑定之前发生的任何事件中读取已发布的数据。如果您不喜欢 ASP.NET 为您执行此操作,您可能还希望处理 SelectedIndex 的值,以便在再次填充后在下拉列表中重新选择正确的选项。

当您单击该按钮时,整个页面都在刷新,这就是为什么您一直获得第一个索引的原因最好的解决方案是:

if(IsPostBack == false)
{
//Save your data code here
}

您还有其他棘手的解决方案,即:将 Dropbox 菜单放在更新面板控件中

将数据源绑定到组合时,请提及组合框的DataMemberDataValue属性,以便从组合中选择元素,您可以selectedValue DataValue

好吧,我已经解决了我的问题,我的问题是当我单击按钮时,pageLoad 方法再次执行,并且我有代码来填充我的下拉列表。 所以我只是补充:

if(!IsPostBack)
{
 //here goes the code to fill the Drop down list
}