【问题标题】:One GridView, two DataSources一个 GridView,两个数据源
【发布时间】:2016-05-18 21:33:21
【问题描述】:

所以,我使用“向导”(GridViewTasks-->NewDataSource)创建了一个 GridView 和 2 个数据源

我的页面上有一个复选框...当检查= true时,我想将dataSource1用于我的gridview,然后检查= 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();

    }
}

但这不起作用。 有什么建议么?

我知道我可以进入我的代码隐藏并“手动”完成所有操作(SqlDataConnection->DataAdapter->DataTable->GridViewDataSource),但是当您使用 GridView 向导和 CheckBox 或 ButtonClick 创建数据源时,有没有办法事件改变你的 GridView 的 DataSource 的?

谢谢

最好的

K

【问题讨论】:

  • 能否请您具体说明您的问题,例如什么不工作,是产生了一些错误还是 CheckBox changed 事件根本没有命中,或者一切正常但数据在 gridview 中根本没有显示?

标签: c# asp.net ado.net datasource


【解决方案1】:

确保为您的复选框设置 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;
}

【讨论】:

  • 谢谢 user1111 这就像一个魅力:) 最好的问候
【解决方案2】:

我曾经使用过这种技术;不要分配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 属性)。

【讨论】:

    猜你喜欢
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多