一个 GridView,两个 DataSources

One GridView, two DataSources

因此,我使用 "wizard"(GridViewTasks-->NewDataSource)

创建了一个 GridView 和 2 个数据源

我的页面上有一个 CheckBox...当 checked=true 时,我想为我的 GridView 使用 DataSource1,当 checked=false 时,我想使用 DataSource2。

我试过在我的代码隐藏中添加 CheckBox_CheckedChanged 事件,如下所示:

    protected void CheckBox_CheckedChanged(object sender, EventArgs e)
{
    if (CheckBox.Checked == true)
    {
        gvPredbiljezbe.DataSource = dsGridView1;
        gvPredbiljezbe.DataBind();
    }

    else
    {
        gvPredbiljezbe.DataSource = dsGridView2;
        gvPredbiljezbe.DataBind();

    }
}

但这行不通。 有什么建议么?

我知道我可以进入我的代码隐藏并完成所有工作 "manually" (SqlDataConnection->DataAdapter->DataTable->GridViewDataSource) 但是当您使用 GridView 向导和在 CheckBox 或 ButtonClick 事件上更改您的 GridView 的数据源?

谢谢

最佳

K

我曾经使用过这种技术;不要分配 DatasourceID,然后将其设置为 page_init 用于初始数据加载,然后执行:

   protected void CheckBox_CheckedChanged(object sender, EventArgs e)
{
    if (CheckBox.Checked == true)
    {
        gvPredbiljezbe.DataSourceID = dsGridView1.ID;
        gvPredbiljezbe.DataBind();
    }

    else
    {
        gvPredbiljezbe.DataSourceID = dsGridView2.ID;
        gvPredbiljezbe.DataBind();

    }
}

类似的东西;交换数据源的 ID 没有问题(已经有一段时间了,所以我认为你使用的是 ID,而不是 ClientID 属性)。

确保为您的复选框设置 AutoPostBack="true"。

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
     CheckBox checkbox = (CheckBox)sender;

     if (checkbox != null)
         gvPredbiljezbe.DataSourceID = checkbox.Checked ? dsGridView1.ID : dsGridView2.ID;
}