2014-12-08 73 views
1

我希望点击一个按钮后保存我选择的索引,以便将该号码存储到我的数据库中。我的下拉列表在下面的评论中。如何在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(); 
+0

asp:DropDownList> – appleduardo 2014-12-08 07:08:45

+0

请写出代码.. – Dhaval 2014-12-08 07:08:48

+0

@appleduardo:请显示您的jQuery代码。 – BNN 2014-12-08 07:18:01

回答

0

当你点击按钮,整个页面被刷新这就是为什么你拿到了第一个索引所有的时间 最好的解决办法是:

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

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

0

虽然结合数据源连击,提DataMemberDataValue属性组合框以便从组合中选择元素selectedValue作为DataValue

1

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

编辑:也许你更新你的问题,也许我误解,但无论哪种方式现在看来,你不想设置SelectedIndex可能高达得到SelectedIndex。即便如此,如果您阅读文档并查看链接中提供的示例,则应该有足够的信息来知道该做什么。

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

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

当然,另一种选择是在执行数据绑定之前读取发生的任何事件发生的数据。如果您不喜欢让ASP.NET为您完成,您可能还需要处理SelectedIndex的值,以便在重新填充后,在下拉框中重新选择正确的选项。

+0

我已经使用这样的绑定: ddlCategory.DataBind(); 但那究竟意味着什么? – appleduardo 2014-12-08 07:17:27

+0

[BaseDataBoundControl.DataBind方法](http://msdn.microsoft.com/en-us/library/zd7t67ef%28v=vs.100%29.aspx)。 – 2014-12-08 07:22:59

0

那么我已经解决了我的问题,我的问题是,当我点击按钮,pageLoad方法再次执行,并且有我的代码填充我的下拉列表中。所以我只是说:

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