我是asp.net的新手并且对它的工作知之甚少。随着我的前进,我正在接受新的和更新的疑虑。
此时我正在使用两个RadioLists
在页面加载时被绑定。
现在,当用户更改列表1中单选按钮的索引时,第二个需要根据当前为所选单选按钮设置的值进行相应更新。
由于页面将被回发,因此我需要再次触发查询以从DataBase获取当前所选索引的新数据,或者以session
的形式在Dataset
中存储2-3个表。
在这种情况下我该怎么办?我应该再次触发SQL查询还是从会话中检索DataSet 。
最佳方法是什么?为什么?
答案 0 :(得分:1)
不应再从数据库中检索单选按钮列表1(rbl1)的数据。它应该已经从ViewState填充。这是页面上的一个不可见对象,它在将控件加载到浏览器并将表单返回给服务器之间跟踪控件的内容。如果将rbl1重新绑定到回发上的数据,则会丢失当前选择。
如果结果将根据第一个选择的结果发生变化,那么从数据库中检索send radiobuttonlist的数据应该没有错。
但是,如果数据的大小很小,您可能希望将结果缓存到应用程序缓存,如果所有用户都看到相同的数据集,或者如果它是用户相关的会话缓存。
然后您可以使用Linq根据第一个radiobuttonlist中的选择查询数据。
<asp:RadioButtonList ID="rbl1" runat="server" AutoPostBack = "true"
OnSelectedIndexChanged="rbl1_SelectedIndexChanged">
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
//bind your rbl1 here
}
}
protected void rbl1_SelectedIndexChanged(object sender, EventArgs e)
{
//load your second radio button list depending on the selection of the first
}