FormView不使用控件事件进行更新

时间:2010-01-07 23:10:39

标签: asp.net

我日常ASP.NET问题的时间。

我的一个页面显示了客户表中的所有客户信息。我希望用户选择是否查看所有客户记录,或从列表中选择特定记录。因此,我的网页有两个单选按钮(显示所有客户,显示特定客户),一个列表框(完整的客户名称)和一个formview控件。我遇到的问题是当我通过单选按钮或列表框选择更改模式时,可以更新formview(参见下面的代码)。

任何人都可以向我提供一些关于如何做我想做的事情的指示吗?

protected void Page_Load(object sender, EventArgs e)
{
    UpdatePage ();
}

protected void RadioButtonShowAll_CheckedChanged(object sender, EventArgs e)
{
}

protected void RadioButtonShowSelected_CheckedChanged(object sender, EventArgs e)
{
}

protected void DropDownListCustomers_SelectedIndexChanged(object sender, EventArgs e)
{
    RadioButtonShowSelected.Checked = true;
    UpdatePage ();
}

protected void UpdatePage ()
{
    if (RadioButtonShowAll.Checked)
        SqlDataSource1.SelectCommand = "SELECT * FROM [Customer] ORDER BY [Company]";
    else
        SqlDataSource1.SelectCommand = "SELECT * FROM [Customer] WHERE ([CustomerID] = @CustomerID) ORDER BY [Company]";

    FormView1.DataBind();
}

2 个答案:

答案 0 :(得分:0)

您的页面必须在客户端更新,才能显示新数据。您需要使用Javascript或AJAX并使用一些变量来跟踪刷新页面的需要,这样您就可以在Formview需要更新时发送更新页面到服务器的请求。

答案 1 :(得分:0)

首先,你只连接了SelectedIndexChanged事件...在这种情况下,更改下拉框时会发生什么,首先是Page_Load()触发 - 调用UpdatePage()。然后,事件触发,再次调用UpdatePage()。第二次可能没有达到预期的效果。

修复是仅在第一次加载页面时从Page_Load()调用UpdatePage(),而不是从回发中调用:

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
        UpdatePage();
}