繁体   English   中英

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

[英]How to save the drop down list selected index in asp.net?

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

通过使用查询来填充下拉列表。 到目前为止,它所做的是,单击按钮后,即使我要保存另一个索引,它也会存储第一个索引(为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(); 

DropDownList具有属性。 您需要正确设置SelectedIndexSelectedItemSelectedValue (并且在与绑定等有关的正确事件中)。

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

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

看来你找到了你的解决方案在检查IsPostbackPage ,如果该值不重新填充列表true 那很好。 如果您不需要每次渲染页面时都进行数据绑定 (即使在POST之后),那么这是一种可行且常见的解决方案。

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

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

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

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

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

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

您还有其他棘手的解决方案:将dropboxmenu放在更新面板控件中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM